gpt4 book ai didi

javascript - 如何在羽毛中搜索 Mongoose 的ObjectId?

转载 作者:行者123 更新时间:2023-11-30 09:33:51 26 4
gpt4 key购买 nike

我有两个羽毛服务,一个用于配置文件,另一个用于标签。

配置文件可以包含来自其他集合的 ObjectId 标签数组。

现在我有一个搜索输入,用户输入“linux”

应返回配置文件 foo,因为它在标签数组中包含 ID“594ceeff6905e622425f523b”。

这种通过objectId在object之间的搜索查询是否可以通过feathers实现?

简介

Mongoose 模型

{
name: { type: String, trim: true, required: true },
labels: [{ type: ObjectId, ref: 'Labels' }],
}

Feathers api 获取配置文件的响应

获取http://localhost:3030/profiles

{
"name" : "foo",
"labels" : [
"594ceeff6905e622425f523b",
"594ceeff6905e622425f523c",
"594ceeff6905e622425f523d"
],
}

{
"name" : "bar",
"labels" : [
"594ceeff6905e622425f523e",
"594ceeff6905e622425f523d"
],
}

标签

Mongoose 模型

{
name: { type: String, trim: true, unique: true, required: true },
}

Feathers api 获取对标签的响应

获取http://localhost:3030/labels

{
"_id": "594ceeff6905e622425f523b",
"name": "linux"
},
{
"_id": "594ceeff6905e622425f523c",
"name": "systemd"
},
{
"_id": "594ceeff6905e622425f523d",
"name": "mongodb"
},
{
"_id": "594ceeff6905e622425f523e",
"name": "javascript"
}

现在我必须在配置文件响应中填充所有标签,发送所有配置文件,然后在前面使用输入的搜索值过滤它们。

随着数据库的增长,这将变得非常低效,必须存在更好的方法来做到这一点吗?

最佳答案

你可以试试这样的代码

Profile.find({}).populate({
path: 'labels',
match: {
name: {
$regex: new RegExp(searchText, 'i');
//searchText: passed from the front end.
}
}
}).then(function(profiles){
var filteredProfiles = profiles.forEach(function(profile){
return profile.labels; //will be null for items don't match the
//searching regex.
//resolve the filtered profiles to the front end.
})
},function(error){
//Error handling
})

关于javascript - 如何在羽毛中搜索 Mongoose 的ObjectId?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44720923/

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