我正在使用带有mongodb的nodejs。我的object
就像是从收集查询中得到的。然后我使用lodash
https://lodash.com/docs#pick过滤它。
var _ = require('lodash');
var object = [{
branchID: '1239',
branchName: 'Branch Name 1',
zoneID: '51',
zoneName: 'Zone Name 1',
regionID: '5',
regionName: 'Region 1'
},
{
branchID: '1240',
branchName: 'Branch Name 2',
zoneID: '52',
zoneName: 'Zone Name 2',
regionID: '5',
regionName: 'Region 3'
}];
var test1 = _.pick(object, function (data) {
return data.branchName == 1239
});
var test1 = _.pick(object, function (data) {
return data.branchName == "1239"
});
console.log(test); // {}
我今天和mongodb一起工作。 上面的代码也适用于今天晚上。 通常情况下,它应该归还给我:
{
branchID: '1239',
branchName: 'Branch Name 1',
zoneID: '51',
zoneName: 'Zone Name 1',
regionID: '5',
regionName: 'Region 1'
}
我有些错误吗?我有另一种方法来过滤这个对象吗?
答案 0 :(得分:1)
我认为你必须使用_.pickBy
,因为这是一个你也可能没有使用过函数的函数,但使用了一个你需要pickBy的函数。
有关进一步说明:_.pick是指您希望从_.pick({a: 1, b: 2, c: 3}, ['a', 'c'])
之类的对象中选择精确键时将返回=> {_ 1}}只与_.omit重合,同样省略:_.omit({a:1,b:2,c:3},[' b']).. ..
然后有时间要检查某个键或值是否符合某个条件,因此您必须使用_.pickBy或_.omitBy:
{a: 1, c: 3}
将返回{b:2,c:3},因为它们大于或等于2.响应评论以确定如果你有一个数组,你可能会想要这样做:
_.pickBy({a: 1, b: 2, c: 3}, function(item){
if(_.gte(item, 2)){
return item;
}
});
答案 1 :(得分:0)
我认为您想选择branchID = 1239的项目,但是您正在使用branchName。这就是为什么没有数据返回的原因。
我认为下面的代码应该可行。
var test1 = _.pick(object, function (data) {
return data.branchID == "1239"
});