【问题标题】:Sails.js - Many-to-Many fails to saveSails.js - 多对多无法保存
【发布时间】:2014-10-04 08:00:01
【问题描述】:

我有一个简单的需要为患者添加标签。我遵循了有关多对多关联的 Sails 和 Waterline 文档,但它在某些时候失败了(没有错误)。我正在使用 MongoDB 进行数据存储。代码如下:

标签模型

module.exports = {

attributes: {
  name: 'STRING',
  color: {
      type: 'STRING',
      defaultsTo: '#777777'
  },
  tagged: {
      collection: 'patient',
      via: 'tags',
      dominant: true
  }

}
};

患者模型

module.exports = {

attributes: {
    name: 'STRING',
    tags: {
        collection: 'tag',
        via: 'tagged'
    }
}
};

这是尝试关联数据的控制器方法:

module.exports = {

addToPatient: function(req, res) {
    Patient.findOne({id: req.param('patientId')}).exec(function(err, patient) {

        // Queue up a record to be inserted into the join table
        patient.tags.add(req.param('tagId'));

        // Save the user, creating the new associations in the join table
        patient.save(function(err) {});
    });

    res.send("tag assigned");
}
};

我检查了各种休息时间的反应,一切似乎都很好。病人找到了。保存函数在患者对象中显示标签关联,但数据库中没有添加任何内容。我假设我将看到正在创建的连接表或患者/标签集合中的某些内容以表示关联,但我什么也看不到。我很困惑。如果我执行 HTTP 获取,我会看到一个“标签分配”响应。我错过了什么?

【问题讨论】:

  • 使用您的确切代码在 Mongo 上工作正常,并创建一个 patient_tags__tag_tagged 集合。您应该将res.send 移动到patient.save 的回调中,但现在即使出现错误,它也会始终显示“已分配标签”。

标签: mongodb express sails.js waterline sails-mongo


【解决方案1】:

对我来说很好,但是您在 tagpatient 集合中,您不会看到包含关联的填充字段。您将看到创建的新连接集合包含@sgress454 指出的关系。

【讨论】:

    猜你喜欢
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    • 2012-12-05
    • 1970-01-01
    • 2014-12-01
    • 2013-08-25
    相关资源
    最近更新 更多