Javascript Mongoose save()不是函数

Javascript Mongoose save()不是函数,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,在我的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

在我的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模型,您应该使用语法:


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

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
});

如果您还需要澄清,请对此答案发表评论。:-)

为什么我必须使用userSchema.methods?因为mongoose是生成模型实例的方法,当您使用mongoose获取数据时,它将使用此方法创建用户对象。这就像定义用户“原型”@JessieEmerson它是一只猫鼬。这应该会有帮助:看看实例方法。这是否仅适用于.save方法?我记得我从来没有这样做过。用户没有定义我在评论中提到我没有检查逻辑,只是解决了如何用schema添加方法的问题。它只保存了需要使用schema的方法吗?我以前从来没有这样用过。通常我只做User.findOneAndUpdate()…不,您也可以在控制器(逻辑)上使用save方法,比如var newUser=newUser({//data}),然后是newUser.save(函数(err){})
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
});