为什么MongoDB不能在Meteor方法中更新?

时间:2016-12-23 04:14:22

标签: mongodb meteor meteor-collections

我正在尝试以下Meteor方法,但它似乎无法正常工作。因为当我检查我的数据库时,我找不到更新的信息。

const Employees = new Mongo.Collection("Employees");
Employees.attachSchema(Schemas.Employee, { selector: { type: "fullTime" } });
Employees.attachSchema(Schemas.EmployeeVariant, { selector: { type: "partTime" } });

Meteor.methods({
  "employees/updateTasks": function (employeeId, taskId) {
    this.unblock();

    //the following is printed.
    console.log("employeeId: "+employeeId+" taskId:"+ taskId);
    return Employees.update({_id: employeeId}, 
        {$push: {tasks: taskId}}, 
        {selector: {type: "fullTime"}});
  }
});

这里有什么明显的错误吗?

另一个问题是:

有时我会看到人们以这种方式使用它:

Employees.update(employeeId,  // not {_id:employeeId}
            {$push: {tasks: taskId}}, 
            {selector: {type: "fullTime"}}); 

这里使用的是:" 5.3 Add event handlers for Task buttons"

为什么会这样?

我的Mongodb版本是3.2.6

1 个答案:

答案 0 :(得分:0)

事实证明,这里使用了集合挂钩(https://github.com/matb33/meteor-collection-hooks)。在“Employees.update”真正发生之前,有一个Employees.before.update方法来检查要做什么。