无法在 Mongoose 回调中保存
Failing to save inside a Mongoose callback
更新:我现在知道问题所在了。这是 .
我正在使用带有 Mongoose 和 MongoDB 的 MMEAN 堆栈。我在 save()
上收到 TypeError: undefined is not a function
错误,因为我试图在回调中使用 Mongoose 保存到 MongoDB。不知道如何正确保存。
这是我必须遵循的逻辑:
- 检查 Foo 集合是否为空
- 如果Foo为空,保存新的Foo文档
- 如果Foo不为空,则不保存新的Foo文档
我相信除了有问题的 mongoose.model("Foo").save(cb);
行之外的其余代码没有错误。但为了以防万一,我已经把所有东西都包括在这里了。我正在从 routes/index.js.
调用保存方法 addFoo()
// routes/index.js - No errors here
router.post('/foo', function(req, res, next){
var foo = new Foo(req.body);
foo.addFoo(function(err, bid){
if(err){ return next(err); }
res.json(foo);
});
});
// models/Foo.js - THE ERROR IS IN HERE
var mongoose = require('mongoose');
var FooSchema = new mongoose.Schema({
creator: String
});
mongoose.model('Foo', FooSchema);
FooSchema.methods.addFoo = function(cb){
// finds all documents of Foo into the "results" array
this.model("Foo").find(function(err, results){
if (err){return err;}
// if the Foo results array is empty
if (results.length == 0){
// THE LINE BELOW IS WHERE THE ERROR OCCURS
// mongoose.model("Foo").save(cb);
// ^
// TypeError: undefined is not a function
mongoose.model("Foo").save(cb);
return;
}
});
}
谢谢你帮我调试。
写成mongoose.model("Foo").save(cb)
是错误的。
您需要一个有效的模型来使用您定义的架构 "Foo"
、var Foo = new mongoose.model('Foo', FooSchema)
。
然后您需要创建一个模型 Foo
的实例 var test = new Foo({creator:'test'})
并且只有在那之后您才能在实例 test
上调用 .save()
.
更新:我现在知道问题所在了。这是
我正在使用带有 Mongoose 和 MongoDB 的 MMEAN 堆栈。我在 save()
上收到 TypeError: undefined is not a function
错误,因为我试图在回调中使用 Mongoose 保存到 MongoDB。不知道如何正确保存。
这是我必须遵循的逻辑:
- 检查 Foo 集合是否为空
- 如果Foo为空,保存新的Foo文档
- 如果Foo不为空,则不保存新的Foo文档
我相信除了有问题的 mongoose.model("Foo").save(cb);
行之外的其余代码没有错误。但为了以防万一,我已经把所有东西都包括在这里了。我正在从 routes/index.js.
addFoo()
// routes/index.js - No errors here
router.post('/foo', function(req, res, next){
var foo = new Foo(req.body);
foo.addFoo(function(err, bid){
if(err){ return next(err); }
res.json(foo);
});
});
// models/Foo.js - THE ERROR IS IN HERE
var mongoose = require('mongoose');
var FooSchema = new mongoose.Schema({
creator: String
});
mongoose.model('Foo', FooSchema);
FooSchema.methods.addFoo = function(cb){
// finds all documents of Foo into the "results" array
this.model("Foo").find(function(err, results){
if (err){return err;}
// if the Foo results array is empty
if (results.length == 0){
// THE LINE BELOW IS WHERE THE ERROR OCCURS
// mongoose.model("Foo").save(cb);
// ^
// TypeError: undefined is not a function
mongoose.model("Foo").save(cb);
return;
}
});
}
谢谢你帮我调试。
写成mongoose.model("Foo").save(cb)
是错误的。
您需要一个有效的模型来使用您定义的架构 "Foo"
、var Foo = new mongoose.model('Foo', FooSchema)
。
然后您需要创建一个模型 Foo
的实例 var test = new Foo({creator:'test'})
并且只有在那之后您才能在实例 test
上调用 .save()
.