我正在使用 Mongoose.js 与我的 Mongo 数据库交互。此函数搜索我的 Location
名称,并且应该将 not find
记录到控制台,而不是 found
,因为我没有名称为 !@£
的 Location
。
Location.find({name: "!@£"}, function(err, obj) {
console.log(obj);
if (!err) {
console.log("found");
} else {
console.log("not found");
}
});
这是注销到我的控制台的内容:
[]
found
预期的行为应该是将未找到
记录到控制台。以下是 Location
模型数据的转储:
[
{
"_id":"5384c421af3de75252522aa2",
"name":"London, UK",
"lat":51.508515,
"lng":-0.12548719999995228,
"__v":0,
"modified":"2014-05-27T16:58:09.546Z",
"search_count":1
},
{
"_id":"5384c766af3de75252522ab4",
"name":"Paris, France",
"lat":48.856614,
"lng":2.3522219000000177,
"__v":0,
"modified":"2014-05-27T17:12:06.990Z",
"search_count":1
},
{
"_id":"53851a213a33fe392b758046",
"name":"Zagreb, Croatia",
"lat":45.8150108,
"lng":15.981919000000062,
"__v":0,
"modified":"2014-05-27T23:05:05.306Z",
"search_count":1
}
]
最佳答案
回调接口(interface)语义不是你想象的那样。
err
表示查询由于数据库无法访问等错误而完全失败。对于文档是否匹配没有任何意义obj
是一个结果数组,恕我直言,您应该将其命名为“位置”以保持清晰。如果没有文档与查询匹配,则该数组将为空。如果某些匹配,它们将在数组中。
因此总共需要考虑 3 种状态:错误、没有匹配的成功、有一些匹配的成功。
关于node.js - Mongoose 发现总是在不应该返回 true 的时候返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23900653/