在Sailsjs中创建父/子关联记录

时间:2014-07-06 00:36:36

标签: sails.js waterline

我很难弄清楚帆/水线是否能做到这一点。 (所以如果这是可能的话,一个适当的答案就是,我一直在阅读文档,查看github问题并查看代码,但仍然不确定)

我有一对一的关联设置,其中一个'帐户'有联系'

我试图在风帆蓝图中创建联系人(所以基本上只使用create()方法)

account = 
{ name: 'Corp'
     contact:{
       firstName: 'Bob',
       lastName: 'Jones'
     }
}

Account.create(account).exec()应该创建帐户和关联的联系人吗?因为我收到以下错误

TypeError: Cannot convert null to object

我的模型设置如此

account.js
module.exports = {
  migrate: 'safe',
  tableName: 'accounts',
  autoPK: false,
  attributes: {
        id: {
                type: 'INTEGER', 
                primaryKey: true,
                autoIncrement: true
            },
        contactId: 'INTEGER',
        name: {type: 'STRING', maxLength: 100},

        contact: {
            model: 'contact',
            columnName:'contactId'
        }

    }
};

我使用风帆10.0-rc8 / waterline 10.0-rc15

2 个答案:

答案 0 :(得分:1)

在创建与其父级(也称为“嵌套式创建”)同时生成的关联实例时应该可以正常工作,但在处理遗留数据库时,要正确处理这些事情是很棘手的。在您的情况下,contactId属性声明可能会导致问题,因为Waterline期望外键字段是隐式的,而不是显式的。尝试删除:

contactId: 'INTEGER',

完全看看它在哪里得到你。

答案 1 :(得分:1)

经过一些研究后我发现,从版本0.10.0-rc15的水线开始,你就无法拥有自定义的外键。在上面的模型中,如果我将“contactId”列更改为“contact”(基本上使它看起来与文档中的完全一样。那么它可以工作。

我做了以下错误报告 https://github.com/balderdashy/waterline/issues/529