mongodb使用变量

时间:2016-02-26 06:36:55

标签: javascript arrays mongodb meteor

我有一系列能够向上或向下投票的网站。在集合中是一个空数组,用于通过将userId插入数组来跟踪已经投票的用户

问题:我可以插入userID甚至用户名,但它只会将id / name变量存储为该时间的字符串。如果我再次点击再次投票,则前一个元素将变为整数。似乎只有当我把""在他们旁边。但是我使用变量来获取用户ID /名称。当我把""在它周围,我真的得到了#34; theVariable",没有帮助。我已经尝试过所有我能想到的......任何帮助都会受到赞赏。

模式

{
                url:url, 
                title:title, 
                description:description,
                createdOn:new Date(),
                createdBy:Meteor.user()._id,
                votes: 0,
                upVotes: 0,
                downVotes: 0,
                voted: []
                }

代码

"click .js-downvote":function(event){
        // access the id for the website in the database

        var website_id = this._id;
        console.log("Down voting website with id "+website_id);

        //add a  down vote
        var user = Meteor.user()._id;               
        if (user){      
            var theUser = this.voted.push(user);                
            Websites.update({_id:website_id}, {$inc: {votes: 1}}, {$inc:{downVotes: -1 }}, {$push:{voted: theUser}});               
            }
           console.log(this.voted);
        return false;// prevent the button from reloading the page
    }

每次我clcik时,我都会在控制台上输出:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, "mWe4r2JcfhRAvn97y"]

首先我得到字符串,然后对于每次后续点击,字符串向下移动,第一个元素变为数字。我需要每次都存储用户ID。所以我可以检查它是否允许投票。

1 个答案:

答案 0 :(得分:0)

解决方案:

  

似乎字符串只有在我放""在他们旁边。但   我使用变量来获取用户ID /名称。当我把""周围   我确实得到了#34; theVariable",没有帮助。

如果您使用的是ES6或更高版本的JS,则可以使用字符串插值。您必须使用反向标记(`)而不是单引号(')。

示例:

var name = "Rose";
console.log(`"My name is ${name}"`);

输出:

"My name is Rose"

在你的代码中执行以下操作:

 Websites.update({_id:website_id}, {$push:{voted: `"${theUser}"`}});

它被内插到:

Websites.update({_id:website_id}, {$push:{voted: "userid within quotes"}});

您将获得报价。使用此方法替换您的查询