解构第一个数组项或如何强制Mongoose返回Object而不是1项数组

时间:2018-04-22 16:08:39

标签: javascript mongoose ecmascript-6

Mongoose的.find方法返回Array,即使找到了一个结果,也就是逻辑

但是例如我确定结果是1项或空数组

我如何解构结果或乞求猫鼬做到这一点?

Payments
  .find({ ... })
  .sort({ ... })
  .limit(1)
  .then(result => {
    result = result[0]; // need to write more conditions, this may throw an exception when array is empty
  })

2 个答案:

答案 0 :(得分:1)

此案例并非针对Mongoose。

可以是:

.then(results => {
  if (results.length) {
    const [result] = results;
    ...
  }
});

或者:

.then(([result]) => {
  if (result) {
    ...
  }
});

这两种方式在Mongoose中都有效,因为如果它存在,结果预计是真实的。

答案 1 :(得分:1)

您可以使用findOne方法,而不是限制查询结果:

Payments
  .findOne({ ... })
  .sort({ ... })
  .then(result => {
    // ...
  })