在我的node.js / express应用程序中,当我查看mongoDB时,我得到了以下内容:
> db.things.find()[0]._id
ObjectId("4da06702584ca3f402000001")
它确实存在一个ID为4da06702584ca3f402000001的集合。但是当我使用请求时,我无法取回它:
app.get('/thing/show', function(req, res){
res.writeHead(200, {'content-type': 'text/plain'});
Thing = mongoose.model('Thing');
id = "4da06702584ca3f402000001";
Thing.find({ _id : id }, function(thing){
console.log("THING RETRIEVED:" + thing);
res.write(JSON.stringify(thing));
});
res.end();
});
什么都没有。
有什么想法吗?
*更新*
这也不起作用:
Thing.find({ _id:ObjectId("4da06702584ca3f402000001")}, function(thing){
它引发了以下错误:
Error: This is an abstract interface. Its only purpose is to mark fields as ObjectId in the schema creation.
at ObjectId (/usr/local/lib/node/.npm/mongoose/1.1.24/package/lib/mongoose/schema.js:426:9)...
*解决方案*
我的坏......
问题不在于find函数,而在于我使用的回调方法......我只提供了一个单独的参数(thing),我应该提供(错误,tring)。
答案 0 :(得分:1)
问题出在回调函数中,我应该使用(错误,事物)作为参数而不是仅使用(事物)。
答案 1 :(得分:0)
尝试:
Thing.findById(id, function(thing){