假设您有一个非常长的泛型函数要在多个模式上使用,并且每个模式对于您要查询的字段都有不同的名称(可能还有不同类型的值 - 字符串,数字等)
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(...)