我有两个对象。
const resolver = {
Query: {
hi() {
return 'Hello Level Up';
}
}
};
const resolver2 = {
Query: {
resolutions() {
return [
{
_id: 'alksdfaqwef231adsf2',
name: 'Get stuff done!'
},
{
_id: 'wefqwefasdf',
name: 'Get stuff done 2!'
}
];
}
}
}
每当我做类似的事情时:
const resolvers = { ...resolver, ...resolver2 };
第一个解析器被覆盖,如果我是console.log
,我只有这个{ Query: { resolutions: [Function: resolutions] } }
我希望它有:
{ Query: { hi: [Function: hi], resolutions: [Function: resolutions] } }
答案 0 :(得分:3)
已经提到过,但这就是传播运营商的工作方式。要进行深度合并,您需要自己编写递归方法。或者使用名为deepmerge的非常受欢迎的小型库。
在你的情况下,这将有效:
const resolvers = {
Query: {
...resolver.Query,
...resolver2.Query
}
};
答案 1 :(得分:1)
要解决此问题,我引入了一个名为lodash
的软件包,并使用了merge
方法。
const resolvers = merge(resolver, resolver2);
输出:
{ Query: { hi: [Function: hi], resolutions: [Function: resolutions] } }