【问题标题】:Why isn't MongoDB update working in a Meteor Method?为什么 MongoDB 更新不能在 Meteor 方法中工作?
【发布时间】:2017-05-08 18:50:33
【问题描述】:

我正在尝试以下 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

【问题讨论】:

  • docs.meteor.com/api/collections.html#selectors 解释了为什么我们可以在更新操作中使用字符串或对象 ID 作为第一个参数。简单地说:这些选择器将文档与其 _id 字段中的值匹配。
  • 您传递给update 的第三个参数(selector...)是什么?你检查过id是否正确吗?
  • 是的,selector: 位没有做任何事情。
  • 已更新。我可以通过连接到正在运行的 Meteror Mongodb 来运行此更新语句。

标签: mongodb meteor meteor-collections


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-28
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多