简体   繁体   中英

Mongoose with mongodb how to return just saved object?

I'm new to mongoose/mongodb

Say I'm saving something:

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

So when I save that the instance obj in the db will have, _id and test. But the _id attribute is added to the object only after entering the db. Note: I don't want to give it an id before. However, I want to grab the object in the db because I need to use the _id value, but I don't want to query it again. Is there a way where you save the object in the database and auto returns the database object so you can get the _id value?

The _id should be present after saving:

var instance = new TestingModel()

instance.test = 'blah'

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

edit : actually the _id is set on instantiation, so it should already be there before save:

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

The correct way to check is the callback of save :

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM