1

有这个架构:

 Task = new SimpleSchema({
      _id: {
        type: String,
        regEx: SimpleSchema.RegEx.Id,
        autoValue: function(){ return Random.id(); }
      },
      title: {
        type: String,
        label: "Task title",
      }
    });

Card = new SimpleSchema({
  _id: {    
    type: String,
    regEx: SimpleSchema.RegEx.Id,
    autoValue: function(){ return Random.id(); }
  },
  tasks: {
    type: [Task],
    label: "Card tasks",
    optional: true
  }
});

ProjectSchema = new SimpleSchema({
  name: {
    type: String,
    label: "Project name"
  },
  cards: {
    type: [Card],
    label: "Project cards",
    optional: true
  }
});

我正在尝试使用此函数对其进行更新,将 3 个 ID 和一个带有已编辑任务的对象传递给:

    editTask : function(projectId,cardId,taskId,oTask) {

    if (! Meteor.userId()) {
        throw new Meteor.Error("not-authorized");
    }

    check(projectId, String);
    check(cardId, String);
    check(taskId, String);
    check(oTask, Object);

    Projects.update({
        _id: projectId,
        cards: {
            $elemMatch : {
                _id: cardId,
                tasks : {
                    _id : taskId
                }
            }
        }
    },
    {
        $set: {"tasks.$.Task": oTask}
    });
    }

错误说:当修饰符选项为真时,验证对象必须至少有一个运算符。据我所知,错误意味着 $set: {"tasks.$.Task": oTask} 它没有正确指向。

我也试过: $set: {"cards.tasks.$.Task": oTask},$set: {"cards.$.tasks": oTask}

4

0 回答 0