Xia*_*lin 5 javascript mongoose node.js
我有一个猫鼬查询如下
Computer
.find()
.where('OS').equals('Windows')
.exec(function(err, items) {
});
Run Code Online (Sandbox Code Playgroud)
它返回操作系统的所有computer记录Windows。
现在我想用一个变量 osType来替换equals参数更灵活。
我*可以为osType变量提供通配符吗?我测试了它,它不起作用。
var osType = '*';
Computer
.find()
.where('OS').equals(osType)
.exec(function(err, items) {
});
Run Code Online (Sandbox Code Playgroud)
或者有什么替代方法可以实现这一目标?
请不要删除该where条款,因为我希望它用于osType=windows, linux ...等......
我认为你必须在这两个语句之间切换:
// If you have a specific value you want to find:
Computer.find().where('OS').equals(osType).exec(...)
Run Code Online (Sandbox Code Playgroud)
和:
// All documents that have a `OS` property:
Computer.find().where('OS').exists().exec(...)
Run Code Online (Sandbox Code Playgroud)
您可以重写代码以适应这种情况:
var query = Computer.find().where('OS');
if (osType === '*') {
query = query.exists();
} else {
query = query.equals(osType);
}
query.exec(...);
Run Code Online (Sandbox Code Playgroud)
或者,您可以将Query#regex两种查询类型合并为一种,但我预计这会对性能产生影响。