Sails JS 和 mySQL 自定义 ID 名称不适用于蓝图
Posted
技术标签:
【中文标题】Sails JS 和 mySQL 自定义 ID 名称不适用于蓝图【英文标题】:SailsJS and mySQL custom ID name not working with blue prints 【发布时间】:2014-01-19 10:09:44 【问题描述】:我在 SailsJS 中创建了一个新模型,并使用自定义 id 名称作为主键。我想使用 SailsJS 附带的蓝图路线,但是当我尝试转到 /name/1
时,我收到以下错误。
ER_BAD_FIELD_ERROR: Unknown column 'id' in 'where clause'
Sails 似乎仍在寻找默认表名称“id”而不是我的新自定义 id。关于如何让 Sails 实现我的更改的任何想法?
谢谢
【问题讨论】:
只是好奇,既然您在模型中使用了一个名为id
的列,为什么需要不同的自定义 id
?
@JohnGalt - 我已将“id”列更改为“uid”,因为我在另一个表中有关系。当我尝试使用 Sails 默认蓝图(即:GET /user/1)时,我收到上述错误。我认为 Sails 会知道使用您设置的任何内容作为模型中的主键,但看起来它只是使用“id”。
【参考方案1】:
转到您的模型定义并最后添加 autoPK:false。
module.exports =
schema:'true',
attributes:
propertyName: type:"string", required:true, unique: true
,
autoPK:false
【讨论】:
作为一个刚刚学习sails.js的人,这是一个救命稻草。【参考方案2】:好的,我查看了 SailsJS src 并在第 37 行的 node_modules/sails/node_modules/waterline/lib/waterline/query/finders/basic.js 中找到了检查属性“autoPK”的内容。此属性默认设置为 true 并查找字段“id”。通过在我的模型中设置“autoPK: false”,它会检查您是否设置了自定义主键并使用它。全部固定。
【讨论】:
以上是关于Sails JS 和 mySQL 自定义 ID 名称不适用于蓝图的主要内容,如果未能解决你的问题,请参考以下文章
Sails js:如何在 Sails js 的单个模型中定义两个 MySQL 连接到两个不同的数据库?