gpt4 book ai didi

javascript - 通过 mongoose 过滤自定义键或值

转载 作者:行者123 更新时间:2023-12-03 02:25:52 24 4
gpt4 key购买 nike

我有一个消息架构,有两种类型的消息:文本和语音,我应该如何获取文本值?

文本数据示例:

{
"_id" : ObjectId("5a8ea03d2601be24b086ccd4"),
"userId" : 20,
"text" : "Hi",
"__v" : 0
}

语音数据示例:

   {
"_id" : ObjectId("5a8ea03d2601be24b086ccd4"),
"userId" : 20,
"voice" : "d2601be24bd22601be24b",
"__v" : 0
}

代码:

Message
.find({userId: '20'}, {_id: 0, text: ''})
.exec((err, obj) => {
if (err) {
console.log(err);
}

for (const val of Object.values(obj)) {
console.log(val.text);
}
});

输出:

Hi    // for text
undefined // for voice

我在输出中有所有类型的消息,我应该如何获取所有文本值? (不是语音)?

最佳答案

几个选项,您可以在 for 循环中添加 if 语句,例如

for (const val of Object.values(obj)) {
if(val.text) console.log(val.text);
}

或者,您可以调整数据库查询以仅选择具有非空文本字符串的消息,例如

Message
.find(
{
userId: '20',
text: {
$exists: true,
$ne: ''
},
{_id: 0, text: ''}
)

注意:我的查询可能不太正确,因为我没有测试它,但它会达到这个效果。请参阅:Find MongoDB records where array field is not empty对于类似的概念。

关于javascript - 通过 mongoose 过滤自定义键或值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48952005/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com