Sails.js与postgreSQL:列的一对多关联不存在

Sails.js与postgreSQL:列的一对多关联不存在,sails.js,waterline,sails-postgresql,Sails.js,Waterline,Sails Postgresql,我需要一些关于sails 0.12.13与postgresql关联的帮助。 我有一个应用程序模型和一个会员模型。关系应该是一对多。一个应用程序可以与多个关系关联。 这是应用程序模型数据库表模式表,称为应用程序: Table "public.apps" Column | Type | Modifiers ------------+----------------

我需要一些关于sails 0.12.13与postgresql关联的帮助。 我有一个应用程序模型和一个会员模型。关系应该是一对多。一个应用程序可以与多个关系关联。 这是应用程序模型数据库表模式表,称为应用程序:

Table "public.apps"
   Column   |            Type             |                     Modifiers                     
------------+-----------------------------+---------------------------------------------------
 id         | integer                     | not null default nextval('apps_id_seq'::regclass)
 name       | character varying           | not null
Indexes:
    "apps_pkey" PRIMARY KEY, btree (id)
    "apps_name_key" UNIQUE CONSTRAINT, btree (name)
Referenced by:
    TABLE "memberships" CONSTRAINT "app_fk" FOREIGN KEY (app_id) REFERENCES apps(id) ON UPDATE RESTRICT ON DELETE CASCADE
这是会员资格:

Table "public.memberships"
   Column   |            Type             |                        Modifiers                         
------------+-----------------------------+----------------------------------------------------------
 id         | integer                     | not null default nextval('memberships_id_seq'::regclass)
 app_id     | integer                     | not null
Foreign-key constraints:
    "app_fk" FOREIGN KEY (app_id) REFERENCES apps(id) ON UPDATE RESTRICT ON DELETE CASCADE
App.find({ id: 1 }).populate('memberships').exec((err, app) => {
      if (err) throw err;

      console.log(app.memberships);
    });
在我的用户模型中,我有:

module.exports = {
  tableName: 'apps',
  autoCreatedAt: false,
  autoUpdatedAt: false,

  attributes: {
    name: { type: 'string', unique: true, required: true, alphanumericdashed: true },
    memberships: { collection: 'memberships', model: 'Membership' },
 }
}
这就是会员模式:

module.exports = {
  tableName: 'memberships',
  autoCreatedAt: false,
  autoUpdatedAt: false,
  attributes: {
    app: { model: 'app', columnName: 'app_id' },
  },
};
当我尝试查询应用程序并获取其成员资格时:

Table "public.memberships"
   Column   |            Type             |                        Modifiers                         
------------+-----------------------------+----------------------------------------------------------
 id         | integer                     | not null default nextval('memberships_id_seq'::regclass)
 app_id     | integer                     | not null
Foreign-key constraints:
    "app_fk" FOREIGN KEY (app_id) REFERENCES apps(id) ON UPDATE RESTRICT ON DELETE CASCADE
App.find({ id: 1 }).populate('memberships').exec((err, app) => {
      if (err) throw err;

      console.log(app.memberships);
    });
我得到这个错误:

Error (E_UNKNOWN) :: Encountered an unexpected error
error: column apps.memberships does not exist
    at Connection.parseE (/usr/src/app/node_modules/sails-postgresql/node_modules/pg/lib/connection.js:539:11)
    at Connection.parseMessage (/usr/src/app/node_modules/sails-postgresql/node_modules/pg/lib/connection.js:366:17)
    at Socket.<anonymous> (/usr/src/app/node_modules/sails-postgresql/node_modules/pg/lib/connection.js:105:22)
    at emitOne (events.js:115:13)
    at Socket.emit (events.js:210:7)
    at addChunk (_stream_readable.js:252:12)
    at readableAddChunk (_stream_readable.js:239:11)
     at Socket.Readable.push (_stream_readable.js:197:10)
     at TCP.onread (net.js:589:20)
看起来关联未启用,waterline正在我的模型中搜索实际的列成员身份。谁能解释一下我做错了什么?thx

根据这篇文章,我猜你的关系不好

//App.js module.exports={ tableName:“应用程序”, 自动创建数据:false, 自动更新日期:false, 属性:{ 姓名:{ 键入:“字符串”, 独一无二:没错, 要求:正确, 字母数字虚线:真 }, 成员资格:{ 收藏:“‘会员资格’,//根据,我猜你的关系不好

//App.js module.exports={ tableName:“应用程序”, 自动创建数据:false, 自动更新日期:false, 属性:{ 姓名:{ 键入:“字符串”, 独一无二:没错, 要求:正确, 字母数字虚线:真 }, 成员资格:{
collection:'membership',//就是这样。谢谢。顺便说一句,我的模型文件名为App.js和membership.js,单数。实际上,@vol7ron,错误消失了,但我仍然没有得到我想要的数据。事实上,当我试图获得一个应用的成员身份时,执行的查询是:SELECT*FROM public.memberships AS memberships其中app=1 ORDER BY memberships.id ASC如您所见,该关系引用了错误的列名app正确的列名是app_id。您知道如何更改吗?如果您试图查找app 1go的成员身份,该查询看起来是正确的。我需要在Membership中的app属性中输入一个列名。js@whites11继续做一个edit是这个答案的答案。我相信其他人可能会在将来参考它。我的假设正确吗,你添加了原来的columnName?我想我认为错误的语法实际上是有效的-那太好了!就是这样。谢谢。顺便说一下,我的模型文件名为App.js和Membership.js,单数。实际上,@vol7ron,错误消失了,但我仍然没有得到我想要的数据。事实上,当我尝试获取一个应用程序的成员资格时,执行的查询是:选择*FROM public.memberships AS memberships,其中app=1 ORDER BY memberships.id ASC正如您所看到的,该关系引用了错误的列名app和正确的列e是app_id。你知道如何更改吗?如果你试图查找app 1go的成员身份,那么该查询看起来是正确的。要查找它,我需要在Membership中的app属性中输入一个columnName。js@whites11请继续编辑此答案。我相信其他人可能会在将来引用它。我是否正确地假设,您将列名重新添加为你原来有它?我想我认为糟糕的语法实际上是有效的-那太好了!