在我的sails控制器中,我实现了一个查找用户的功能。但是当我尝试使用ObjectId进行搜索时,它会返回所有数据。我找不到任何理由。但是当我创建一个新的单独字段作为" userID",并找到使用" userID"时,它就有效。我认为问题是使用" ObjectId"可能是什么问题。
wamp
Json数据:在控制台中打印。
module.exports = {
updateOrders : function(req,res){
var ObjectId = require('mongodb').ObjectID;
console.log("req " + req);
var data = req.body;
var obj = [];
console.log("\ndata "+(data));
var jdata = JSON.stringify(data);
console.log("\njdata: "+jdata);
data.forEach(function(orders){
var objid = ObjectId(orders.id);
console.log("Obj orders id :" + objid);
ApplicationOrder.find({id: ObjectId(orders.id)}).exec(function (err, order) {
if (err){
return done(err);
}
console.log('order ' + order);
obj.push(order);
});
})
res.send(obj);
}
};
答案 0 :(得分:1)
对于标准的sails.js / waterline查询,您必须在查询参数中使用id作为字符串,不要使用ObjectId(ordersId)
。
使用sails原生查询时,请使用ObjectId(ordersId)
。
答案 1 :(得分:1)
如果你使用任何mongodb适配器,那么不要尝试通过ObjectId(orders.id)转换id。尝试正常查询,如
ApplicationOrder.find({'id':orders.id})
对于本机风帆查询,您必须将id转换为objectId。
答案 2 :(得分:0)
我终于能够解决这个问题了。我必须在帆中编辑我的模型类,并且只使用 orders.id 模型类,
_id:{type : 'objectid'}
以及搜索
.find({_id: orders.id})
这对我很有用。