【问题标题】:Unable to persist data using nodejs mongoosejs to mongodb无法使用 nodejs mongoosejs 将数据持久化到 mongodb
【发布时间】: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


【解决方案1】:

可能与您使用 mongodb 库连接然后尝试使用 mongoose 进行保存有关。 Mongoose 将 mongodb 作为依赖项,并且可能无法解析您建立的连接。删除您的 mongodb 代码并使用 mongoose connect() 函数建立数据库连接。

类似:

mongoose.connect('mongodb://localhost:port/test', function(err){ if(err) console.log(err); else console.log('Connected'); });

【讨论】:

  • 你也可以通过console.log(mongoose.connections.length)来验证连接是否存在。我相信不是一个空数组。
  • 感谢优素福的建议。 mongodb.js使用mongoose连接mongodb,文件名误导。
猜你喜欢
  • 1970-01-01
  • 2021-09-19
  • 1970-01-01
  • 2012-04-15
  • 1970-01-01
  • 2016-07-18
  • 1970-01-01
  • 2020-11-07
  • 2012-12-14
相关资源
最近更新 更多