gpt4 book ai didi

mysql - 在不使用主键的情况下在 sails js 中填充一对多关系

转载 作者:行者123 更新时间:2023-11-28 23:32:06 25 4
gpt4 key购买 nike

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>
}

我正在尝试取款机

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'
}
.....
}
}

在 Controller 中

sails.models.user
.find()
.populate('queries')
.exec(function (err, results) {

});

但是我得到了错误: ER_BAD_FIELD_ERROR:“字段列表”中的未知列“__queries.queries”

有没有人有关于水线中一对多关系的好教程,因为那里的文档非常糟糕,所以我觉得我只是不了解如何设计模型。

最佳答案

据我所知,您想要的是能够设置您的 userModelrecordingsModel 模型,以便通过为记录赋予特定值 email,它将自动与共享该电子邮件的任何用户相关联。这不是 Waterline(Sails ORM)支持的东西。

相反,您最好的选择是按照文档中的指示设置模型:

// 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'
}
}
}

我的猜测是您试图避免必须查找用户 ID 才能将新录音与其关联。如果将 email 作为 userModel 的主键,就可以这样做;然后当你创建一个新的记录时,你可以将它的 user 设置为一个电子邮件地址,瞧:这两个是链接的。

关于mysql - 在不使用主键的情况下在 sails js 中填充一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37035841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com