【发布时间】:2016-06-12 13:32:49
【问题描述】:
我在 Mac OSX (10.10.5) 上使用 Sails 0.12.3 和 postgresql 9.3.4,我正在尝试实现 through association
我设置了两个模型,第三个模型作为连接表。当我尝试通过创建关系来测试它是否已全部设置时,我收到此错误:
Uncaught TypeError: Cannot read property 'via' of undefined
Here's my test (mocha/chai) -- 我认为错误实际上出在这种创建关联的方法中(因为如果我为连接创建模型作为一个单独的调用它起作用:
describe('with orgs', function() {
beforeEach(function(done) {
var testEmail = 'sue@test.com';
var orgName = 'Awesome Org';
Org.create({name:orgName})
.then(function(org) {
return User.create({username:testEmail, orgs:[org]})
})
.then(function(user) {
done()
})
.catch(done);
});
it('populates empty list of orgs', function(done) {
console.log('about to call find');
User.find().populate('orgs')
.then(function(users) {
console.log('users', users);
var user = users[0]
assert.isNotNull(user.orgs);
assert.equal(user.orgs.length, 1);
done();
})
.catch(done);
});
});
这是我的模型:
User.js:
module.exports = {
attributes: {
username : { type: 'email' },
orgs: {
collection: 'org',
via: 'user',
through: 'orgmembership'
}
}
};
Org.js:
module.exports = {
attributes: {
name : 'string',
users: {
collection: 'user',
via: 'org',
through: 'orgmembership'
}
},
};
OrgMembership.js:
module.exports = {
tableName: 'org_membership',
attributes: {
user: { model: 'User', columnName: 'user_id', foreignKey: true},
org: { model: 'Org', columnName: 'org_id', foreignKey: true}
}
};
我已经在github 上发布了整个项目。
我发现了这个other stackoverflow question,它似乎在做同样的事情,并试图遵循同样的模式,但它对我不起作用。
我将不胜感激任何指针或建议。谢谢!
【问题讨论】:
-
看起来这是 Waterline 中的一个错误,并已从 Waterline@0.11.5 开始修补。我对您的项目进行了测试,它按预期工作。
标签: postgresql sails.js waterline