【发布时间】:2015-06-14 19:26:53
【问题描述】:
由于某种原因,当尝试使用 Mongoose 将数据保存到 MongoDB 数据库时,永远不会调用回调函数。一开始以为没有触发错误码,后来又测试了回调函数有没有输入,结果没有!并且没有任何内容保存在数据库中。我什至在存储其他 MongoDB 数据库的文件夹中都看不到名为 client-db 的文件(通过命令行)——这可能是问题吗?
我尝试过针对类似问题的不同解决方案,但到目前为止没有任何效果。有谁知道我做错了什么?我希望有任何帮助!
这是我的代码的相关部分:
client-db.js:
var mongoose = require('mongoose');
var db = mongoose.connect('mongodb://localhost/client-db', function(){
console.log("Client DB: connected"); // This is shown
});
module.exports = mongoose;
//module.exports = db; // Another problem was solved by this, but didn't work for me
绘图数据.js:
var db = require('client-db');
var plotDataSchema = db.Schema({
time: {type: Number, required: true},
value: {type: Number}
});
var PlotData = db.model('PlotData', plotDataSchema);
module.exports = PlotData;
controller.js:
var PlotData = require('plot-data');
//data is an object with time and value
var plotData = new PlotData({
time: data.time,
value: data.value
});
plotData.save(function(err){
console.log('Entered callback'); // Never shown
if(err){
console.log(err); // Never shown
//return handleErrror(err); // Different things I tried when I thought the error handling was the problem - didn't change anything
//return next(err);
}else{
console.log('Plot data saved in client db'); // Never shown
}
});
【问题讨论】:
-
将
err作为参数传递给您的 mongoose.connect() 回调,例如var db = mongoose.connect('mongodb://localhost/client-db', function(err){。然后,在回调内部,定义了err,如果定义了,值是多少? -
它给了我一个错误,我发现我只需要在运行 node.js 应用程序之前从命令行手动启动 mongod。问题已解决 - 非常感谢 :)
标签: node.js callback mongoose save