使用$ set中的变量使用node.js更新mongodb

金·詹森斯

我正在制作投票系统,投票是通过链接完成的。在我的index.js中,我获得了所需的值并将其放入变量中。“类型”变量代表需要更新的mongodb中的字段,我将其放在变量中,因为它取决于单击哪个链接。

现在在$ set函数中,他们需要db字段和一个新值,因为我都使用变量,但是我的“ type”变量不起作用。当我转到mongodb时,会创建一个名为“ type”的新表。如何解决呢?

router.get('/vote/:Id/:Value/:Type', function(req, res) {
var db = req.db;
var id = req.params.Id;
var type = req.params.Type;
var value = parseInt(req.params.Value);
var newValue = value + 1;
var collection = db.get('games');

collection.update(
    {"_id" : id},
    {$set: {type: newValue}}
, function (err, doc) {
    if (err) {
        res.send("There was a problem");
    }
    else {
        res.location("../../../admin");
        res.redirect("../../../admin");
    }
});

});

灵魂检查

在javascript中,您不能将变量用作对象常量中的属性名称,而这就是您要尝试做的事情。

试试吧:

var a = 'someProperty';

var o = {a: 'somePropertyValue'};

console.log(o);

将打印{ a: 'somePropertyValue' }不会{someProperty:'somePropertyValue}

如果javascript允许以对象文字符号引用属性名称中的变量,则它必须摆脱未加引号的名称,因为它们会造成歧义。应该a用作属性的值还是应该作为变量的值a

尝试使用事先创建的对象创建更新对象文字,而不使用对象文字符号,因此您的代码如下所示:

router.get('/vote/:Id/:Value/:Type', function(req, res) {
    var db = req.db;
    var id = req.params.Id;
    var type = req.params.Type;
    var value = parseInt(req.params.Value);
    var newValue = value + 1;
    var collection = db.get('games');

    //We create the $set property/value pair using property assignment, not the object literal
    var updateVal = {};
    updateVal[type] = newValue;

    collection.update(
        {"_id" : id},
        {$set: updateVal}   //use it here
        , function (err, doc) {
            if (err) {
                res.send("There was a problem");
            }
            else {
                res.location("../../../admin");
                res.redirect("../../../admin");
            }
        }
    );
});

更好的是,$set事先构造整个操作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Mongoose和Node.js更新MongoDB中的数据

使用node.js在MongoDB中更新对象

使用 node js 更新 mongodb 中的嵌套数组

如何使用Node.Js在MongoDB中插入或更新数组?

尝试使用节点 js 更新 mongodb 中的单个条目

使用节点js更新mongodb中的单个文档

使用Node.js更新mongoDB中的特定数据部分

使用express和node.js更新mongodb中的单个记录

我在使用node.js更新mongodb中的数据时滞后

如何使用 JS/JSON 对象更新 MongoDB 集合?

使用Node JS在MongoDb中聚合查询

尝试使用猫鼬更新mongodb中的记录。我的应用程序正在使用Node.js和Express 4

如何使用Node.JS将$ inc运算符用于MongoDB中的变量

Node.js:MongoDB-如何使用变量创建索引?

使用 Node.js 的 Azure WebApp 中的环境变量

使用 Node.js 通过 json 中的变量插入值

使用Node.js通过其唯一的_id更新多个MongoDB对象

如何在node_js和mongodb中使用_id更新数据

如何使用Node.js / Mongoose / MongoDB同时更新2个集合

mongoDB-光标仅使用node.js驱动程序更新1个文档

如何使用 mongodb 和 node 中的聚合更新值

使用$ set和聚合更新MongoDB集合

使用MongoDB $ set更新多个子文档

如何使用Sails.js和Waterline更新MongoDB子文档中的特定密钥?

如何使用js在刀片laravel中的foreach上更新变量

使用 Set State 更新变量数据

如何使用node js(mongoose)删除mongodb中的相关schema

使用Node.js将文件存储在mongodb中

使用Node.js在Mongodb中嵌套插入