我开始使用Sails.js(我是一个绝对的新手),我想创建以下类模型。
我有一个Student
和一个SubscriptionList
。学生拥有他/她订阅的subscriptionLists
的集合,并且SubscriptionList知道订阅它的所有学生。因此,它是双向的多对多关联
我使用这些生成器创建了模型:
sails generate model Student firstName:string lastName:string fileNumber:string career:string regid:string email:email
sails generate model SubscriptionList name:string description:string
由于我不知道如何在Sails中运行迁移(我之前在Rails中做了类似的事情),之后我转到了模型的文件,并添加了这个: / p>
id: {
type: 'integer',
primaryKey: true,
autoIncrement: true
},
subscriptionLists:{
collection: "subscriptionLists",
via: "students"
}
到Student
模型,并且:
id: {
type: 'integer',
primaryKey: true,
autoIncrement: true
},
students:{
collection: "students",
via: "subscriptionLists"
}
到SubscriptionList
模型,然后从控制台运行sails lift
。我收到了这个错误:
Error: Collection student has an attribute named subscriptionLists that is pointing to a collection named subscriptionlists which doesn't exist. You must first create the subscriptionlists collection.
这是有道理的,因为我试图一次创建关系的两端(根据我的理解)。
那么,如何在Sails.js中创建双向多对多关系而不通过中间实体(我的意思是,只是使用常规的交叉表)?
任何帮助都将受到高度赞赏 最好的问候。
答案 0 :(得分:1)
在sails / waterline中创建多对多关系时,会为您构建连接表。你的问题是一个错字。您指定的集合需要与其指向的模型的模型名称相匹配。你有多元化你的。需要像这样:
学生:
id: {
type: 'integer',
primaryKey: true,
autoIncrement: true
},
subscriptionLists:{
collection: "subscriptionList", // match model name here
via: "students", // match attribute name on other model
dominant: true // dominant side
}
SubscriptionList:
id: {
type: 'integer',
primaryKey: true,
autoIncrement: true
},
students:{
collection: "student", // match model name
via: "subscriptionLists" // match attribute name
}