Mongoose save()不是一个函数

Jes*_*son 1 javascript mongoose mongodb node.js

在我的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);
  })
});
Run Code Online (Sandbox Code Playgroud)

我的模型(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);
}
Run Code Online (Sandbox Code Playgroud)

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

Dar*_*rio 5

如果要将实例方法添加到mongoose Model,则应使用实例方法语法:

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);
Run Code Online (Sandbox Code Playgroud)

  • 因为是生成模型实例的猫鼬方式,当您使用mongoose获取数据时,它将使用此方法创建User对象.它就像定义用户"原型" (3认同)