所以,这是错误:
/dev/sth-srv/app/services/notify.js:23
Notify.save(function() {
TypeError: Object function model(doc, fields, skipId) {
if (!(this instanceof model))
return new model(doc, fields, skipId);
Model.call(this, doc, fields, skipId);
} has no method 'save'
这是模型(日期是字符串化的,因为我想确保我在这里没有做错任何事情):
var mongoose = require('mongoose');
var notifySchema = new mongoose.Schema({
to : String,
type : String,
date : String,
what : String,
who : String,
status : String
});
mongoose.model('Notify', notifySchema);
module.exports = mongoose.model('Notify', notifySchema);
这是达到保存方法的对象
{
type: 'vote',
date: 'Sat Feb 21 2015 11:33:58 GMT+0100 (CET)',
what: 'asdgf12',
who: 'demouser',
status: 1,
to: 'demouser'
}
这是要求保存:
var notify = new Notify(notifyBody);
Notify.save(function() {
/.../
});
让我无法弄明白的是,它在很多情况下适用于其他型号,但不适用于其他型号。
最后重要信息: 此save func不是直接从路由调用,而是从另一个带有module.exports的文件调用。 (模型是必需的)。
答案 0 :(得分:1)
您需要在使用new关键字而不是模型创建的对象上调用save。
var notify = new Notify(notifyBody);
//save needs to be called on notify, not Notify
notify.save(function() {
/.../
});