当它不应该时,猫鼬发现总是回归真实

时间:2014-05-27 23:38:43

标签: node.js mongodb mongoose

我正在使用Mongoose.js与我的Mongo数据库进行交互。此功能会搜索我的Location名称,并应将not found记录到控制台而不是found,因为我没有Location名称为!@£ 1}}。

Location.find({name: "!@£"}, function(err, obj) {
  console.log(obj);
  if (!err) {
    console.log("found");
  } else {
    console.log("not found");
  }
});

这是登出我的控制台的原因:

[]
found

预期的行为应该是将not 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
  }
]

1 个答案:

答案 0 :(得分:1)

回调接口语义不是您的想法。

  • err表示由于DB无法访问等错误,查询完全失败。关于文件是否匹配没有任何意义
  • obj是一系列结果,您应将其命名为“位置”恕我直言以保持清晰。如果没有文档与查询匹配,则此数组将为空。如果有些匹配,它们将在数组中。

所以总共需要考虑3个州:错误,没有匹配的成功,有些匹配的成功。