mongoose save()不是函数

在我的app.js我需要我的模型

var User = require('./models/user'); app.post('/user/add', function(req,res,next){ var newUser = new User(); newUser.add(req.body.name, function(response){ res.json(response); }) }); 

和我的模型(user.js)看起来像这样

 var mongoose = require('mongoose'); var Schema = mongoose.Schema; var userSchema = new Schema({ name: String }); var User = module.exports = mongoose.model('user', userSchema); module.exports.add = function(name,callback){ User.save({name:name}).exec(callback); } 

但是我得到newUser.add错误不是一个函数?

如果你想添加实例方法到mongoose模型,你应该使用实例方法的语法:

 var mongoose = require('mongoose'); var UserSchema = new mongoose.Schema({ name: String }); // Instance methods UserSchema.methods.add = function(name, callback){ this.name = name; return this.save(callback); } module.exports = mongoose.model('User', UserSchema); 

方法可以像这样添加方法关键字

 var mongoose = require('mongoose'); var Schema = mongoose.Schema; var userSchema = new Schema({ name: String }); userSchema.methods.add = function(name,callback){ User.save({name:name}).exec(callback); // not checking logic } var User = module.exports = mongoose.model('user', userSchema); 

你可以这样做:

 var mongoose = require('mongoose'); var Schema = Mongoose.Schema; //schema is declared here var userSchema = new Schema({ name: String }); var user = Mongoose.model('User', UserSchema); //here we are assigning new data to user collection //this record will not be saved here //it will only check the schema is matching or not //if record is matching to schema then it will assign '_id' to that record var userRec = new user({"name":"Jessie Emerson"}); userRec.save(function(error, userDoc) { //this is the callback function }); 

如果你需要更多的澄清,那么请评论这个答案。 🙂