嗨我还在学习节点,并尝试使用javascript nodejs。 与此同时,当我分开通过"其中"将续集声明合二为一。 好的,这是我目前的代码:
var periodsParam = {};
periodsParam = {
delete: 'F',
tipe: 1,
variantid: (!ctx.params.id ? ctx.params.id : variants.id)
};
if (ctx.query.country) {
periodsParam = {
country: ctx.query.country
};
}
console.log(periodsParam);
从上面的代码中,它始终返回{ country: 'SG' }
,但我想返回{ delete: 'F', tipe: 1, variantid: 1, country: 'SG' }
我该如何解决?
Anyhelp会很感激,谢谢你。
答案 0 :(得分:2)
问题是你总是在重新初始化它。您应该将其设置为现有对象的属性。
从
更新periodsParam = {
country: ctx.query.country
};
到
periodsParam.country = ctx.query.country;
答案 1 :(得分:2)
问题是,您使用=
签署了periodsParam
3次,最后只有periodsParam
只返回country
,因为这行:
if (ctx.query.country) {
periodsParam = {
country: ctx.query.country
};
}
不是将新对象分配给periodsParam
,而是使用点表示法添加另一个键值对,如下所示:
if (ctx.query && ctx.query.country) { //before accesing .country check if ctx.query is truthy
periodsParam.country = ctx.query.country;
}
根据@Paul建议,条件应为ctx.query && ctx.query.country
- 如果ctx.query
为undefined
,则会阻止TypeError。
答案 2 :(得分:1)
您也可以像这样分配对象:
periodsParam = Object.assign({}, periodsParam, { country: ctx.query.country });