2016-07-29 3 views
2

Из следующего ниже урокаMongoDB - Возврат идентификатор вставленного элемента

https://codeforgeek.com/2015/08/restful-api-node-mongodb/

я следующее, чтобы создать заказ в моей базе данных

exports.createOrder = function(req,res){ 
    var db = new mongoOp(); 
    var response = {}; 

    db.userId = req.body.userId; 
    db.userEmail = req.body.userEmail; 
    db.userOrder = req.body.userOrder; 

    db.save(function(err){ 
     if(err) 
     { 
     response = {"error" : true,"message" : "Error adding data"}; 
     } 
     else 
     { 
      response = {"error" : false,"message" : "Data added"}; 
     } 
     res.json(response); 
    }); 

} 

Как я могу вернуть идентификатор вставил элемент из DB.save() вместе с ответом?

ответ

4

Функция обратного вызова из db.save() функции принимает два параметра, где второй параметр даст вам вставки или обновления результат. Если вы не предоставите _id с данными, которые необходимо сохранить, mongodb будет генерировать id и назначить его на ключ _id.

Так что, если вы пытаетесь получить _id из результате, вы найдете что-то вроде этого: ObjectId("50691737d386d8fadbd6b01d") и вы можете добавить его к вам ваш ответ объект.

db.save(function(err, result){ 
    if(err) { 
    response = { error: true, message: "Error adding data" }; 
    } else { 
    response = { error: false, message: "Data added", id: result._id }; 
    } 
    res.json(response); 
}); 

Надеюсь, что ответ вам поможет.

1

Функция сохранения возвращает объект WriteResult, который содержит в качестве свойства идентификатор добавленного объекта. посмотрите docs, поэтому попробуйте записать его, как показано ниже, и посмотреть, что вы получаете.

db.save(function(err, result){ 
     if(err) 
     { 
     response = {"error" : true,"message" : "Error adding data"}; 
     } 
     else 
     { 
      console.log(result._id); 
      response = {"error" : false,"message" : "Data added"}; 
     } 
     res.json(response); 
    }); 
Смежные вопросы