【发布时间】:2014-06-28 18:54:04
【问题描述】:
我目前尝试使用 nodejs 和 mongoosejs 将文档持久保存到 mongodb 失败。
这是我的代码结构:
start.js 只是初始化我的应用程序并创建 mongod 连接,详细信息请参见 mongodb.js。连接建立成功,可以在mongodb控制台看到。
这是我的model.js
var mongoose = require('mongoose');
var regSceham = new mongoose.Schema({
userId: String,
name:String,
mob:String,
email:String
})
var RegistrationModel = mongoose.model('registration', regSceham);
exports.RegistrationModel = RegistrationModel;
这是我的 datalayer.js:
var mongoose = require('mongoose');
var mongodb = require('./mongodb');
var model = require('./model');
//var RegistrationModel = mongoose.model('RegistrationModel');
/////////////////////////////////
function save(data){
console.log('inside save >>>>> ' + data);
var regModel = new model.RegistrationModel(data);
console.log('after model');
regModel.save(function(err,regModel){
console.log('inside mongoose save');
if(err)
console.log(err);
});
}
require('./model')
exports.save = save;
当我在 datalayer.js 中调用 save 方法时,“内部保存 >>>>> ”语句记录到控制台,然后什么也没有发生。似乎var regModel = new model.RegistrationModel(data); 语句没有任何错误就失败了,我不知道为什么。任何建议将不胜感激。
按要求提供发布数据示例:
{
"userId":"tesrwetId",
"name":"Test",
"mob":"2536245632",
"email":"ashdjas@sa.com"
}
24/06 更新
我开始认为,由于在我的模型初始化后建立了与猫鼬的连接,因此遇到了这个问题。我无法在模型初始化之前建立连接。
以下是文件初始化顺序。虽然首先初始化了 mongodb.js(mongoose 连接),但是在 model.js 初始化之后会调用 on connect 方法。
mongodb.js 文件:
console.log('mongodb....');
var mongoose = require('mongoose');
var configure = require('./configure');
// create database
//console.log('sadasdasdsa >>>>>>>' + configure.creds.mongodb)
mongoose.connect(configure.creds.mongodb);
mongoose.connection.on('connected', function () {
console.log('MOngodb connection open to ' + configure.creds.mongodb);
require('./model');
});
// If the connection throws an error
mongoose.connection.on('error',function (err) {
console.log('MOngodb connection error: ' + err);
});
// When the connection is disconnected
mongoose.connection.on('disconnected', function () {
console.log('MOngodb connection disconnected');
});
process.on('SIGINT', function() {
mongoose.connection.close(function () {
console.log('MOngodb connection disconnected through app termination');
process.exit(0);
});
});
require('./model');
28/06 更新
我后来意识到这种关于加载顺序的理解是不正确的。阅读here
【问题讨论】:
-
你能指定失败时
data是什么吗? -
@dylants 添加了示例帖子数据。
-
我已经尝试执行你的代码,相同的文件夹结构,从这个页面复制粘贴的代码,正如你所提到的,它对我来说工作正常。我有控制台 - 在猫鼬保存中。您能否将您的示例代码邮寄给我(电子邮件来自 myprofile)。
-
@HarpreetSingh 请查看更新后的问题。您的电子邮件不是您个人资料的一部分。
标签: node.js mongodb mongoose restify