我有两个对象。
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] } }
已经提到过,但这就是传播运营商的工作方式。要进行深度合并,您需要自己编写递归方法。或者使用一个非常受欢迎的名为deepmerge的小型图书馆。
在你的情况下,这将工作:
const resolvers = {
Query: {
...resolver.Query,
...resolver2.Query
}
};
为了解决这个问题,我引入了一个名为lodash
的包,并使用了merge
方法。
const resolvers = merge(resolver, resolver2);
输出:
{ Query: { hi: [Function: hi], resolutions: [Function: resolutions] } }