我面临一个非常简单的问题,如果我将其放在find()
中并通过var str;
,我将在find(str)
中给出什么内容;
如果我在猫鼬中使用以下内容进行搜索
Hospitals.find({ $or: [{treatment:'HYDERABAD'} ,{city:'HYDERABAD'} ]}).
).sort({'city': 1}).exec(function (err, hospitals) {
if(err){.some code.}
else{.some code.}
});
搜索成功
但是如果我将其放在字符串中并传递给 find()
像这样:
var mystr;
mystr = "{ $or: [{treatment:'HYDERABAD'} ,{city:'HYDERABAD'} ]}";
Hospitals.find(mystr).sort({'city': 1}).exec(function (err, hospitals) {
if(err){.some code.}
else{.some code.}
});
出现此错误
{ ObjectParameterError: Parameter "filter" to find() must be an object, got { $or: [{treatment:'HYDERABAD'} ,{city:'HYDERABAD'} ]}
at MongooseError.ObjectParameterError (/home/ubuntu/workspace/node_modules/mongoose/lib/error/objectParameter.js:23:11)
at Query.find (/home/ubuntu/workspace/node_modules/mongoose/lib/query.js:1424:16)
at Function.find (/home/ubuntu/workspace/node_modules/mongoose/lib/model.js:1413:13)
at /home/ubuntu/workspace/app.js:1459:27
at callbacks (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:164:37)
at param (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:138:11)
at pass (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:145:5)
at Router._dispatch (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:173:5)
at Object.router (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:33:10)
at next (/home/ubuntu/workspace/node_modules/connect/lib/proto.js:174:15)
at Object.handle (/home/ubuntu/workspace/node_modules/express-sanitizer/lib/express-sanitizer.js:25:5)
at next (/home/ubuntu/workspace/node_modules/connect/lib/proto.js:174:15)
at /home/ubuntu/workspace/node_modules/body-parser/lib/read.js:130:5
at invokeCallback (/home/ubuntu/workspace/node_modules/raw-body/index.js:224:16)
at done (/home/ubuntu/workspace/node_modules/raw-body/index.js:213:7)
at IncomingMessage.onEnd (/home/ubuntu/workspace/node_modules/raw-body/index.js:273:7)
message: 'Parameter "filter" to find() must be an object, got { $or: [{treatment:\'HYDERABAD\'} ,{city:\'HYDERABAD\'} ]}',
name: 'ObjectParameterError' }
有人可以帮忙吗
谢谢
Anurag
答案 0 :(得分:0)
Model.find()
将条件参数作为类型Object
这样做,
mystr = "{ $or: [{treatment:'HYDERABAD'} ,{city:'HYDERABAD'} ]}";
mystr转换为字符串。因此,将mystr传递给find(mystr)
时出现错误。
您应该这样做:
mystr = { $or: [{treatment:'HYDERABAD'} ,{city:'HYDERABAD'} ]};