【发布时间】: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