Meteor.js处理MongoDB对象并保存更改

时间:2016-08-26 06:58:11

标签: javascript mongodb meteor

我在meteor上使用以下代码:

            var game = Games.findOne({_id:gameId});
            if(game.status == 'waiting'){
                game.status == 'canceled';
            }

基本上我是从一个集合中获取一个对象,对它进行一些更改,现在我想将它保存到数据库中,该怎么做?是否有类似.save()方法的东西?

我来自PHP,所以我可能完全忽略了这一点,但在Laravel我可以从数据库中获取,使用该对象,完成后只需在数据库上更新它。我可以在流星中使用相同的工作流程吗?怎么样?

3 个答案:

答案 0 :(得分:0)

您需要使用update方法。

代码应该是:

var game = Games.findOne({_id:gameId});

if(game.status == 'waiting'){
      Games.update({_id:gameId},{$set : {status: 'canceled'}});
}

警告:仅当仍包含insecure包时,这仅适用于客户端。您应该在生产中调用DB对CRUD操作的方法。

答案 1 :(得分:0)

完成对象操作后,可以像这样保存

var game = Games.findOne({_id:gameId});

if (game.status == 'waiting') {
    game.status = 'canceled';
}

// .. change more stuff in `game`

Games.update({_id: game._id}, {$set: game});

<小时/> 这与Ankit's answer之间的区别在于,在我的版本中,整个对象都会更新,而在Ankit中只有status。如果你只是要更新一个参数,那么最好使用他的方式,否则我会这样做。

答案 2 :(得分:0)

正如其他人所回答的那样,流星收藏品没有您期望的工作流程,但是有一个名为天文学的流星的ORM包可以按照您想要的方式进行,因此如果您试用它可能会提高效率({ {3}})

var game = Games.findOne({_id:gameId});
if(game.status == 'waiting'){
   game.status = 'canceled';
}
game.save()