【问题标题】:What is returned from Mongoose query that finds no matches?未找到匹配项的 Mongoose 查询返回什么?
【发布时间】:2013-08-15 09:30:46
【问题描述】:

我对 Mongoose 文档感到有些困惑。

如果我在 mongoose 中运行不匹配集合中任何文档的查询,那么回调函数 callback(err, results) 中的 errresults 的值是多少?我只是不知道 Mongoose 认为什么是“错误”。作为一名数学家,返回空集(即results 数组空)似乎完全有效,不应该是“错误”——查询执行得很好,只是没有匹配的文档。另一方面,有些人可能认为这是一个“错误”。来自 mongoose 文档:

  1. err = null, results = []
  2. err = null, results = null
  3. err = 错误文档,results = null

【问题讨论】:

    标签: node.js mongodb mongoose database


    【解决方案1】:

    这取决于查询。如果是find,则为results == []。如果是findOne,则为results == null。如果其他一切正常,则没有错误。

    【讨论】:

    • 猜猜有三个选项 ;)
    • 那么,find 的情况 1,findOne 的情况 2?
    • 您可以像 var query = Model.find();var query = Model.findOne(); 一样使用它 稍后编辑:我刚刚看到您的编辑,确实,3 个选项 :) 您的情况是正确的。
    • 如果使用.populate会有什么结果?
    【解决方案2】:

    如果条件有效但未找到匹配项:

    • find:errnullresult[]

    • findOnefindByIderrnullresultnull

    但是,如果某些条件无效(例如,字段为 string 但您传递了 object,或者您传递了无效的 _id

    对于所有三个:err{..}resultundefined

    【讨论】:

      【解决方案3】:

      如果使用.find()
      方便的方法是

      models.<your collection name>.find({ _id: `your input` }).then(data => {
          if (data.length == 0) return // throw your error to the console;
      });

      【讨论】:

        猜你喜欢
        • 2016-11-23
        • 2016-12-28
        • 1970-01-01
        • 1970-01-01
        • 2018-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多