2017-06-22 19 views
0

我想发布的用户数据的MongoDB,但我得到一个错误:类型错误:User.save不是一个函数

TypeError: user.save is not a function

如何解决这一问题?

我使用快递

这里是我的代码:

router.post('/', function (req, res) { 
    let params = { 
    id: req.body.id, 
    name: req.body.name 
    } 
    User 
    .save({ params }) 
    .find() 
    .then((data) => { 
     res.render('index', { title: 'List', data: data }); 
    }) 
    .catch((err) => { 
     return res.send(err); 
    }); 
}) 

这是我的架构:

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 

var User = new Schema({ 
    id: String, 
    name: String 
}); 

User.pre('save', function (next) { 
    next(); 
}); 

module.exports = mongoose.model('User', User); 
+1

'.save()'是一个“实例方法”。你想在这个上下文中使用''.create()'](http://mongoosejs.com/docs/api.html#model_Model.create)。 –

回答

0

你必须创建一个新的User实例,并在其上

调用 save
router.post('/', function (req, res) { 
    let user = new User ({ 
    id: req.body.id, 
    name: req.body.name 
    }) 

    user.save((err) => { 
       if (err) { 
        return res.send(err); 
       } 

       User 
       .find() 
       .then((data) => { 
        res.render('index', { title: 'List', data: data }); 
       }) 
       .catch((err) => { 
        return res.send(err); 
       }); 
    }); 
}) 
+0

你能告诉我为什么我需要创建一个新实例吗? – HKS

+0

因为'save'方法是一个实例方法。你可以在你想要保存的实例上调用它,而不是一般的'User'类型。 –

相关问题