有没有一种方法可以在mongoose中的find()中使用变量作为字段名
Is there a way to use a variable for the field name in a find() in mongoose?
假设您有一个非常长的通用函数要在多个模式上使用,并且每个模式都有一个不同的名称用于查询的字段(可能还有不同类型的值——字符串、数字等)
function foo (field, value){
Model.find({field: value});
}
foo('idfoo', 'xx');
foo('idbar', 5);
我试着在猫鼬中做这样的事情来证明概念,似乎只有当你使用变量作为值时,它才会起作用,但你不能使用字段。
这不可能吗?
只需将变量放入[]
function foo (field, value){
Model.find({[field]: value});
}
foo('idfoo', 'xx');
foo('idbar', 5);
您可以使用内置的where
函数,使对显示的函数的调用变得不必要:
Model.find().where(fieldName, value).exec(function(err, results) { });
你可以通过链接做不止一件事:
Model.find().where(field1, val1).where(field2, val2).exec(...)
它也可以是丰富的,支持嵌套属性和其他运算符:
Model.find().where('orders.total').gt(1500).exec(...)
function foo(field, value) {
var query = {};
query[field] = value;
Model.find(query)...
}
如果您想按通用字段搜索,请尝试以下代码
import { Request, Response } from "express";
import Client from "../models/client";
const search = async (req: Request, res: Response) => {
try {
const keyword = req.query.keyword || "";
const field: any = req.query.field || "email"; // default field
let clients = await Client.find(
{ [field]: { $regex: ".*(?i)" + keyword + ".*" } },
);
if (clients?.length) {
res.status(200).send(clients);
} else {
res.status(200).send("no match");
}
} catch (error) {
res.status(500).send(error.message);
}
};
export default {
search,
};
相关文章:
- 我怎么能让流星简单模式中的一个字段等于一个js变量,并且仍然让用户填写简单模式的其余部分
- 将变量用作mongodb中字段名的一部分
- 如何在 Meteor 中的 Mongo 查询中使用变量作为字段名称
- 角度变量在编辑输入字段之前不显示
- ASP:代码隐藏的字段变量在从更新面板中的服务器返回时丢失值
- 使用Jquery Keyup函数将变量从一个输入字段传递到另一个
- 如何更新charts.JS值字段中的JS变量
- 将日期和时间变量组合为mysqli日期时间字段
- 带有隐藏字段的输出变量
- 有没有一种方法可以在mongoose中的find()中使用变量作为字段名
- 在输入字段上使用它-can'我不能从函数中取出变量,这样我就可以使用它了
- 将JS中的一个变量插入Django表单输入字段
- 在不使用200行var的情况下,在结果字段中添加顺序命名的变量?[PDF表格]
- 将javascript中的JSON字段提取到变量中
- 将输入字段文本放入变量中并将其用于 jquery JSON get 请求
- 将表单隐藏字段变量从一个函数传递到另一个函数
- JSON 访问变量字段
- JavaScript表单值与变量字段名
- MongoDB聚合框架:在Project "key"中使用动态javascript变量字段
- 如何使用变量字段名增加mongodb字段