我正在开发一个应用程序,我在其中使用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作为响应发送。请告诉我它是怎么做的 实现
由于
答案 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);
});