如何将值传递给节点中的数组

时间:2018-03-20 10:35:28

标签: javascript arrays node.js sequelize.js koa

嗨我还在学习节点,并尝试使用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会很感激,谢谢你。

3 个答案:

答案 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.queryundefined,则会阻止TypeError。

答案 2 :(得分:1)

您也可以像这样分配对象:

periodsParam = Object.assign({}, periodsParam, { country: ctx.query.country });