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 连接到两个不同的数据库?

Sails.js + Waterline:通过关联进行多对多

如何在 Sails.js 中为自定义路由启用 CORS

与你相遇好幸运,Sails.js自定义responses

ZeroMQ 和 Sails.js

sails.js 和多个参数