解构第一个 Array 项或如何强制 Mongoose 返回 Object 而不是 1-item Array
Posted
技术标签:
【中文标题】解构第一个 Array 项或如何强制 Mongoose 返回 Object 而不是 1-item Array【英文标题】:Destructuring first Array item or How to force Mongoose to return Object instead of 1-item Array 【发布时间】:2018-10-02 17:28:25 【问题描述】: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
)
【问题讨论】:
.then(([result]) => …)
?
【参考方案1】:
此案例并非 Mongoose 独有。
可以是:
.then(results =>
if (results.length)
const [result] = results;
...
);
或者:
.then(([result]) =>
if (result)
...
);
这两种方法在 Mongoose 中都有效,因为如果结果存在,则结果应该是真实的。
【讨论】:
【参考方案2】:您可以使用findOne
方法而不是限制您的查询结果:
Payments
.findOne( ... )
.sort( ... )
.then(result =>
// ...
)
【讨论】:
哦,我认为不可能将.findOne
和 .sort
混合使用,因为 Robo 3T(MongoDB 客户端)不允许这样做。谢谢。以上是关于解构第一个 Array 项或如何强制 Mongoose 返回 Object 而不是 1-item Array的主要内容,如果未能解决你的问题,请参考以下文章
对函数声明强制执行 TSX 道具类型内联,该函数声明使用对象解构来声明道具
Spark SQL:array_contains 和自动插入的强制转换