如何在Node.js中发送响应

时间:2014-11-26 14:45:05

标签: javascript node.js mongodb

  

我正在开发一个应用程序,我在其中使用Node.js和MongoDB   后端。方案是:用户填写所有详细信息并发布   到服务器。数据存储在MongoDB数据库中   对象ID。现在我想将ObjectID作为响应发送给用户。

     

代码如下:

router.route('/user')

.post(function(req, res) {

        var user = new User(); // create a new instance of the User model
        user.name = req.body.name; // set the user name (comes from the request)

        user.email = req.body.email; // set the user email (comes from the
                                                                        // request)
        user.age = req.body.age; // set the user age(comes
        user.save(function(err) {
                if (err) {
                        res.send(err);
                }

                res.json({
                        message: 'User Created!',

                });
        });
  

用户架构如下:

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

var UserSchema   = new Schema({
        email:                          String,
        name:                           String,
        age:             String,

});

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

如何将ObjectID作为响应发送。请告诉我它是怎么做的   实现

     

由于

2 个答案:

答案 0 :(得分:2)

除了MongoDB之外,您似乎还在使用像Mongoose这样的ODM。您必须检查ODM的文档,了解您要执行的操作。但通常情况下,一旦你拥有了你想要的Id的记录,你就可以这样做:

user.save(function (err, data) {
  if(err) {
    //handle the error
  } else {
    res.send(200, data._id);
  }
});

在这里,我们利用每个Mongo记录的ObjectID作为其_id属性存储的事实。如果你只使用Mongo而不是ODM,你也可以在保存后搜索记录并以这种方式获取_id属性。

collection.find(/* search criteria */, function (err, data) {
  //same as before
});

答案 1 :(得分:0)

你需要在回调中使用第二个参数:

user.save(function(err, description){
  var descriptionId = description._id;

  res.send(descriptionId);
});