拒绝更新mongo集合中的文档子集

时间:2015-05-27 13:12:15

标签: javascript node.js mongodb meteor

我在一个集合上有一个集合钩子,以产生一个“空日历”。这或多或少是一个需要保持不变的基础,也就是说,拒绝更新。

Players.after.insert({
  // creates an empty calendar
  Calendars.insert({
    playerId: this._id
  });
});

在大多数日历中,更新都是完全可以的,但是在这些通过此挂钩插入的特定日历中,我想拒绝更新。

Calendars.deny({
  update: function (userId, doc) {
    // don't allow "blank" calendar to be updated
  }
});

使用meteor管理拒绝集合中文档子集更新的安全方法是什么?

1 个答案:

答案 0 :(得分:3)

扩展我的评论,看到没有人回答。一种方法是在空白'上设置一个标记。记录。例如:

Players.after.insert({
  // creates an empty calendar
  Calendars.insert({
    playerId: this._id
    preventUpdate: true
  });
});

你的拒绝功能可以是:

Calendars.deny({
  update: function (userId, doc) {
    return doc.preventUpdate === true
  }
});

这应该是安全的,因为deny函数中的doc参数是来自数据库的未修改文档,因此无法从客户端进行篡改。