有什么办法,如何通过@Query()
注释遍历我们在控制器中获得的对象?
我们在GET中具有动态计数和查询参数的名称,因此我们需要获取整个@Query()
对象并对其进行迭代以了解我们确切拥有的paramas。
但是如果我要遍历该对象,则会收到错误消息,指出该对象不可迭代。
有什么想法吗?
答案 0 :(得分:4)
您可以使用(() => {
return this._visible ? '' : null;
})
获取查询对象的键数组。然后,您可以遍历以下键数组:
Object.keys()
答案 1 :(得分:1)
在嵌套控制器中,使用@Query()
/ @Body()
/
无参数的@Headers()
装饰器
将返回键值javascript对象。
例如:
// request url: http://example.com/path-foo/path-bar?qf=1&qb=2
@Post(':foo/:bar')
async function baz(@Query() query,@Param() param) {
const keys = Object.keys(query); // ['qf', 'qb']
const vals = Object.values(query); // ['1', '2']
const pairs = Object.entries(query); // [['qf','1'],['qb','2']]
const params = Object.entries(param); // [['foo','path-foo'],['bar','path-bar']]
// these are all iterate able array
// so you can use any Array's built-in function
// e.g. for / forEach / map / filter ...
}
参考:
// sample object
const obj = {
foo: 'this is foo',
bar: 'this is bar',
baz: 'this is baz',
};
Object.keys(obj);
Object.values(obj);
Object.entries(obj);
/**
* return iterable array:
*
* ['foo', 'bar', 'baz']
*
* ['this is foo', 'this is bar', 'this is baz']
*
* [
* ['foo', 'this is foo']
* ['bar', 'this is bar']
* ['baz', 'this is baz']
* ]
*/