Mongoose与mongodb如何返回刚刚保存的对象?

时间:2011-09-20 02:12:11

标签: javascript mongodb mongoose

我是mongoose / mongodb的新手

说我保存了一些东西:

var instance = new TestingModel();
instance.test = 'blah2';
instance.save();

因此,当我保存db中的实例obj将具有,_id和test时。但只有在进入db后才会将_id属性添加到对象中。注意:我之前不想给它一个id。但是,我想抓住数据库中的对象,因为我需要使用_id值,但我不想再次查询它。有没有办法将对象保存在数据库中并自动返回数据库对象,以便获取_id值?

3 个答案:

答案 0 :(得分:23)

保存后_id应该出现:

var instance = new TestingModel()

instance.test = 'blah'

instance.save(function(err){
    console.log(instance._id) // => 4e7819d26f29f407b0...
})

编辑:实际上_id是在实例化时设置的,所以在保存之前它应该已存在:

var instance = new TestingModel()
console.log(instance._id) // => 4e7819d26f29f407b0...

答案 1 :(得分:0)

检查的正确方法是保存的回调

instance.save(function(err,savedObj){ // some error occurs during save if(err) throw err; // for some reason no saved obj return else if(!savedObj) throw new Error("no object found") else console.log(savedObj); })

答案 2 :(得分:0)

router.post('/', function(req, res) {
    var user = new User();
    user.name = req.body.name;
    user.token = req.body.token;

    user.save(function(err, obj) {
        if (err)
            res.send(err);

        res.json({ message: 'User created!', data: obj });
    });
});