我在Mac OSX(10.10.5)上使用 Sails 0.12.3 和 postgresql 9.3.4 ,我正在尝试实现{{3 }}
我已经设置了两个模型,第三个作为连接表。当我尝试通过创建关系进行测试时,我得到了这个错误:
Uncaught TypeError: Cannot read property 'via' of undefined
这是我的测试( 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}
}
};
我已将整个项目发布在through association。
我发现这个github,似乎做了同样的事情,并试图遵循相同的模式,但它不适合我。
我很感激任何指针或建议。谢谢!
答案 0 :(得分:-1)
Users.js应该引用Org.js中“via”定义中的“users”,这同样适用于OrgMembership.js
module.exports = {
attributes: {
username : { type: 'email' },
orgs: {
collection: 'org',
via: 'users',
through: 'orgmembership'
}
}
};