在使用Mongoose时,如何在投影中包含Mongodb的“_id”字段?

3

我正在使用Node.js和Mongoose检索Mongo文档,代码如下:

var app = express();
var Thread = mongoose.model('threads', schema);
app.get('/api/closed/all', function(req, res) {
    Thread.find({ IsCLOSED: true }, function(err, post){
        res.send(post);
    });
});

但是它没有返回“_id”字段,我错过了什么?
在文档中,它说默认情况下应该包括“_id”。
谢谢。
**编辑**
解决方案:我必须在Schema中指定它:
var schema = new mongoose.Schema({_id:String ........});

你的代码是正确的,你如何知道_id丢失了?你会遍历响应对象并在问题中显示输出吗? - Sumeet Kumar Yadav
当查看端点中的答案时,_id不存在,所有其他字段都存在。 - Alfonso Embid-Desmet
你是如何创建 _id 的?它是手动创建的 ID 还是 MongoDB 为你创建了 Object ID? - Sumeet Kumar Yadav
it's manually created - Alfonso Embid-Desmet
我找到了原因,我必须在Mongoose模式中指定它:var schema = new mongoose.Schema( {_id : String .... } );问候 - Alfonso Embid-Desmet
1个回答

4
如果手动创建,_id 不是一个 Object。默认情况下,mongoose 假设 _id 是一个 ObjectId。如果你想要获得手动创建的 ID,你需要在模式中指定它。如果 _id 是一个 Number,那么你必须在模式中显式指定。
schema= new Schema({
            _id: Number
        }),

var Thread = mongoose.model('threads', schema);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接