我正在使用Sails v1.1-
以下是“通过”关联中的示例-https://sailsjs.com/documentation/concepts/models-and-orm/associations/through-associations
他们基本上将“直通”关联定义为自定义模型。因此,这实际上不是“直通”,而只是控制多对多关系的联接表。
因此,在中间模型中,我添加了一个自定义属性isTyping
,如下所示。
是否可以添加到集合中并同时设置此中间值?
对于带有setIntermediate
的示例伪代码:
User.addToCollection(userId, 'pets', petId).setIntermediate('isTyping', true);
因此,请遵循文档上的示例:
myApp/api/models/User.js
module.exports = {
attributes: {
name: {
type: 'string'
},
pets:{
collection: 'pet',
via: 'owner',
through: 'petuser'
}
}
}
myApp/api/models/Pet.js
module.exports = {
attributes: {
name: {
type: 'string'
},
color: {
type: 'string'
},
owners:{
collection: 'user',
via: 'pet',
through: 'petuser'
}
}
}
myApp/api/models/PetUser.js
module.exports = {
attributes: {
owner: {
model:'user'
},
pet: {
model: 'pet'
},
// I ADDED THIS INTERMEDIATE COLUMN NAME in the join table
isTyping: {
type: 'boolean',
defaultsTo: false
}
}
}
答案 0 :(得分:0)
我不知道这是否正确,但是要做的是代替使用>>> len(0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: object of type 'int' has no len()
/ Pet.addToCollection(petId, 'owners', userId)
或User.addToCollection(userId, 'pets', petId)
/ Pet.removeFromCollection(petId, 'owners', userId)
做
User.removeFromCollection(userId, 'pets', petId)
我不确定是否正确,并且不支持PetUser.create({ owner: userId, pet: petId, isTyping: true }).populate('user').populate('pet')
/ addToCollection
的数组参数。而且,您还必须对数据进行整理,以获取具有removeFromCollection
的数据透视表属性的owners
/ pets
列表。