javascript - 如果每个记录都包含 nodejs 和 mongoose 中的值,则查找记录列表
问题描述
如果包含搜索值,则编写此函数用于查找用户。
async SearchUser(type, value) {
try {
let objr=`${type}: ${value}`;
return await User.find({objr}).exec();
}catch(err){
console.log("SearchUser -> err", err)
}
}
例如我想用 phoneNumber 搜索,我发送这个请求:
http://localhost:3000/admin/Manager/SearchUser/phoneNumber/091598
我想向我显示电话号码包含的用户列表091598
。
或者可能想用 userName 搜索用户:
http://localhost:3000/admin/Manager/SearchUser/userName/adm
我想向我显示用户名包含的用户列表admn
。
当我运行使用此代码时,它不会向我显示任何内容,但在数据库中我有包含此条件的记录。
有什么问题 ?我该如何解决这个问题????
解决方案
objr
您在函数内部创建的方式SearchUser
不正确。
我建议更改您在服务器上处理搜索功能的方式,正如您所提到的那样,您必须为相同的find
功能创建单独的路由。
使用基于查询的路由(此处有更多信息),如下所示
http://localhost:3000/admin/Manager/SearchUser?phoneNumber=091598
所以在服务器上你可以访问req
对象上的这个值req.query
,你会得到一个对象
console.log(req.query);
//output
{
"phoneNumber": "091598"
}
您还可以在此处传递多个查询,例如
http://localhost:3000/admin/Manager/SearchUser?phoneNumber=091598&userName=adm
你的对象会有
console.log(req.query);
//output
{
"phoneNumber": "091598"
"userName": "adm"
}
现在您可以将整个req.query
对象传递给SearchUser
函数并直接在内部使用它User.find()
伪示例:
router.get('/admin/Manager/SearchUser/', (req, res) => {
const searchParams = req.query;
console.log(searchParams); // check your params here
const users = SearchUser(searchParams);
return users;
});
const SearchUser = async(params) => {
try {
return await User.find(params).exec();
}catch(err){
console.log("SearchUser -> err", err);
}
}
API URL 示例:
http://localhost:3000/admin/Manager/SearchUser?phoneNumber=09159
推荐阅读
- javascript - Kibana Canvas 插件不适用于 SearchGuard
- css - 防止全局 CSS 在 Angular 5 中应用组件
- python - python中的图像分割
- android - 即使在应用程序重新启动后,如何始终选中复选框,直到用户在 android 中取消选中它?
- c# - 在现有数据库中实现 ASP.NET Identity
- postgresql - Postgresql 查询以从将数据存储为对象的列中检索数据
- python - GitHub:Webhook 有效负载中的 API 名称/身份?
- git - git-ftp sftp “建立 ssh 会话失败”
- javascript - 选择 jQuery 插件的麻烦
- java - Java8 Parallel Stream 需要时间来求和值