如何使用双簧管迭代对象数组?
How to iterate over array of objects using oboe?
我有一个 json 形式的响应:
[{
"id": 425055,
"title": "Foo"
}, {
"id": 425038,
"title": "Bar"
}, {
"id": 425015,
"title": "Narf"
}]
我用oboe.js创建高地流:
const cruiseNidStream = _((push, next) => {
oboe({
url: 'http://fake.com/bar/overview,
method: 'GET',
headers: {
'X-AUTH': 'some token',
},
}).node('.*', (overview) => {
// I expect here to get an object having and id, title property
push(null, overview.id);
}).done((overview) => {
push(null, _.nil);
}).fail((reason) => {
console.error(reason);
push(null, _.nil);
});
});
我的问题是我不知道使用什么模式来匹配该数组的每个元素的节点。由于目前我通过当前设置获得的项目再次是所有对象和属性:
425055
Foo
{ id: 227709, title: 'Foo' }
如果响应有一个 属性 像:
{
'overview': [],
}
我本可以使用 .overview.*
。
Oboe.js 支持鸭子打字:
.node('{id title}', (overview) => {
}
请注意,我的 json 是扁平的,所以这很有效。嵌套 json.
的结果可能会有所不同
Oboe 有两种匹配数据的方式,通过路径和通过鸭子类型。
鸭子打字
oboe('/data.json')
.node('{id title}', function(x) {
console.log('from duck-typing', x)
})
按路径
oboe('/data.json')
.node('!.*', function(x) {
console.log('from path matching', x)
})
//or also valid
.node('!.[*]', function(x) {
console.log('from path matching', x)
})
在路径示例中,请注意 !
字符。这是指树的根节点,这种模式只会将你的三个对象,而不是它们自己的任何属性进一步嵌套。
我做了一个gomix where you can view this working in the console, and also view the source.
我有一个 json 形式的响应:
[{
"id": 425055,
"title": "Foo"
}, {
"id": 425038,
"title": "Bar"
}, {
"id": 425015,
"title": "Narf"
}]
我用oboe.js创建高地流:
const cruiseNidStream = _((push, next) => {
oboe({
url: 'http://fake.com/bar/overview,
method: 'GET',
headers: {
'X-AUTH': 'some token',
},
}).node('.*', (overview) => {
// I expect here to get an object having and id, title property
push(null, overview.id);
}).done((overview) => {
push(null, _.nil);
}).fail((reason) => {
console.error(reason);
push(null, _.nil);
});
});
我的问题是我不知道使用什么模式来匹配该数组的每个元素的节点。由于目前我通过当前设置获得的项目再次是所有对象和属性:
425055
Foo
{ id: 227709, title: 'Foo' }
如果响应有一个 属性 像:
{
'overview': [],
}
我本可以使用 .overview.*
。
Oboe.js 支持鸭子打字:
.node('{id title}', (overview) => {
}
请注意,我的 json 是扁平的,所以这很有效。嵌套 json.
的结果可能会有所不同Oboe 有两种匹配数据的方式,通过路径和通过鸭子类型。
鸭子打字
oboe('/data.json')
.node('{id title}', function(x) {
console.log('from duck-typing', x)
})
按路径
oboe('/data.json')
.node('!.*', function(x) {
console.log('from path matching', x)
})
//or also valid
.node('!.[*]', function(x) {
console.log('from path matching', x)
})
在路径示例中,请注意 !
字符。这是指树的根节点,这种模式只会将你的三个对象,而不是它们自己的任何属性进一步嵌套。
我做了一个gomix where you can view this working in the console, and also view the source.