Node Express猫鼬:数字值未定义的问题

时间:2019-04-19 14:47:45

标签: node.js express

在我的应用中,我在mongoDB中有一个计数器集合。

POST和GET都可以。

但是PUT不会更新计数器值:

exports.setCounter = (req, res, next) => {
    var query = Counter.where({ cid: 'supercounter' })
    console.log('req body setCounter  ' + req.body.value);
    Counter.find().then(

        (counter) => {
            console.log(counter)
            switch (req.body.value) {
                case 'aco': // add a company 
                    counter.numco = counter.numco + 1;
                    break;
                case 'dco': // delete a company
                    counter.numco = counter.numco - 1;
                    break;
                case 'ausco': // add a company user
                    console.log(counter.numusco);
                    counter.numusco = counter.numusco + 1;
                    console.log(counter.numusco);
                    break;
                case 'dusco': // delete a company user
                    counter.numusco = counter.numusco - 1;
                    break;


            }
            query.updateOne(counter).then(
                () => {
                    res.status(201).json({
                        message: 'Counter updated successfully!'
                    });
                }
            ).catch(
                (error) => {
                    res.status(400).json({
                        error: error
                    });
                }
            )
        }
    )
    };

所有计数器均为数字。 我发送了“ ausco”值,但是没有用。

这是nodemon控制台日志:

enter image description here

有人知道为什么我会得到Undefined和NaN吗?

感谢您的帮助:)

1 个答案:

答案 0 :(得分:2)

看来console.log(counter)正在输出数组。

访问例如console.log(counter.numusco);应该是console.log(counter[0].numusco);

编辑:明确“为什么”

正在输出

undefined,因为数组对象上不存在numusco属性

NaN之所以出现,是因为使用undefined进行数学运算(例如+1)会得出非数字