MongooseJS pre hook'删除n#39;循环依赖

时间:2015-01-10 01:09:56

标签: node.js mongodb mongoose requirejs

schemaA和schemaB之间存在一对多的关系。如果我调用schemaA.remove();我希望删除所有相关的schemaB。如果我调用schemaB.remove(),我希望删除对instanceA中schemaB的引用。

使用

SchemaA
  .pre('remove', function (next) {
    var instanceBIdArray = this.instanceBIdArray;

    async.map(instanceBIdArray, function (instanceBId, callback) {
        SchemaB.findByIdAndRemove(instanceBId, function (err, instanceB) {
          if (err) callback(err);
          if (!instanceB) callback('instanceB not found.');
          callback(null, instanceBId);
        });
      },
      function (err, results) {
        if (err) next(new Error('Something went wrong with deleting instanceB.'));
        return next();
      });
  });

SchemaB
  .pre('remove', function (next) {
    var self = this;
    SchemaA.findByIdAndUpdate(self.instanceAId, {
      $pull: {
        instanceBIdArray: self._id
      }
    }, function (err, instanceA) {
      if (err) next(new Error('Something went wrong with deleting instanceA.'));
      return next();
    });
  });
每个mongoose模式中的

分别似乎是解决这个问题的正确方法。但是,我只能让其中一个工作。如果我有两个express都不会编译,并且会说schemaB不存在。

我认为这与require.js有关,并且为了导出schemaA requirejs需要导出schemaB,反之亦然。非常感谢对此的任何见解!

错误是:MissingSchemaError: Schema hasn't been registered for model "A".

0 个答案:

没有答案