sails / waterline文档中一对多的示例代码假定主键是两个模型之间的关联(我认为)。
http://sailsjs.org/documentation/concepts/models-and-orm/associations/one-to-many
但是,我的模型有一个引用列,引用一些类似于
的其他值User
{
id (primary): <int>
email: <string>
}
recordings
{
id (primary): <int>
email: <that email from user>
}
atm im trying
userModel.js
{
attributes: {
email: {
type: 'string',
size: 255,
unique: true
},
},
queries: {
columnName: 'email',
model: 'recordings'
}
.....
}
}
recordingsModel.js
{
attributes: {
email: {
type: 'string',
size: 255,
},
},
queries: {
model: 'user'
}
.....
}
}
并在控制器中
sails.models.user
.find()
.populate('queries')
.exec(function (err, results) {
});
但是我得到了错误 :ER_BAD_FIELD_ERROR:'字段列表'中的未知列'__queries.queries'
有没有人有一个关于水线中一对多关系的好教程,因为那里的文档非常糟糕所以我觉得我只是不了解如何设计模型。
答案 0 :(得分:1)
根据我可以收集的内容,您想要的是能够设置recordingsModel
和email
模型,以便通过为// userModel.js
{
attributes: {
email: {
type: 'string',
size: 255,
unique: true
},
},
recordings: {
collection: 'recordingsModel',
via: 'user'
}
.....
}
}
// recordingsModel.js
{
attributes: {
email: {
type: 'string',
size: 255,
},
},
user: {
model: 'userModel'
}
}
}
提供一定值的记录,将自动与共享该电子邮件的任何用户相关联。这不是Waterline(Sails ORM)所支持的。
相反,您最好的选择是按照文档中的说明设置模型:
email
我的猜测是你试图避免查找用户ID以便将新录音与之关联起来。如果您将userModel
作为user
的主键,则可以执行此操作;然后,当您创建新录制内容时,可以将其letters = letters + key;
设置为电子邮件地址,然后将两者关联起来。