MongoDB - 返回插入项的ID

时间:2016-07-29 15:51:07

标签: javascript node.js 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()返回插入项的id以及响应?

2 个答案:

答案 0 :(得分:4)

db.save()函数的回调函数有两个参数,第二个参数可以为您提供插入或更新的结果。如果您未向_id提供要保存的数据, mongodb 将生成 ID 并将其分配给_id的密钥。

因此,如果您尝试从结果获取_id,您会发现类似这样的内容:ObjectId("50691737d386d8fadbd6b01d"),您可以将响应添加给您strong>对象。

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 :(得分:1)

save函数返回一个WriteResult对象,该对象包含添加对象的id作为属性。查看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);
  });