我发现一个人没有返回结果。我尝试了几个不同的东西,但它似乎没有返回正确的结果。至少,我没有回复。
我试过这个:
var ObjectId = require('mongoose').Types.ObjectId;
m_Kbase_data.findOne( {_id : new Object(req.params.m_id)}, function(err, kbase_data){
另外,我在没有Object的情况下尝试过它。
我得到了
的结果kbase_data.length === 0
但是,当我运行时:
m_Kbase_data.find({_id : req.params.m_id}, function(err, kbase_data){
我找到了唯一正确的文件。我觉得这很奇怪。
思想?
答案 0 :(得分:3)
这可能会对您有所帮助: -
var ObjectID = require('mongodb').ObjectID;
var ObjectId = require('mongoose').Types.ObjectId; //For mongoose
m_Kbase_data.findOne( {_id : new ObjectID(req.params.m_id)}, function(err, kbase_data){});
希望这会对你有所帮助。
答案 1 :(得分:1)
对象id实际上是一个字符串,所以代码
{_id : req.params.m_id}
是对的。尝试用对象
来做{_id : new Object(req.params.m_id)}
与
相同{_id : {"0":req.params.m_id}}
和_id显然不包含任何对象
答案 2 :(得分:0)
在查询中使用ObjectId而不是object
var ObjectId = require('mongoose').Types.ObjectId;
m_Kbase_data.findOne( {_id : new ObjectId(req.params.m_id)}, function(err, kbase_data){
答案 3 :(得分:0)
无需将字符串强制转换为ObjectId,因为Mongoose已经为您执行了此操作,只需执行
m_Kbase_data.findOne({_id: req.params.m_id}, function(err, kbase_data) { ... }
或使用findById()
签名
m_Kbase_data.findById(req.params.m_id, function(err, kbase_data) { ... }