如何在Sails.js和Waterline中执行SQL连接和关系?

任何人都可以指导我如何设置关系模式和在sails.js中执行连接?

水线正式支持协会

概观

从文档 :

借助Sails和Waterline,您可以跨多个数据存储关联模型。 这意味着,即使您的用户居住在PostgreSQL中,而且他们的照片仍在MongoDB中,您也可以与数据交互,就好像他们一起居住在同一个数据库中一样。 您也可以使用相同的适配器跨越不同连接(即数据存储/数据库)的关联。 例如,如果您的应用程序需要访问/更新存储在公司数据中心的MySQL数据库中的传统配方数据,而且还可以从云中全新的MySQL数据库中存储/检索配料数据,则此function非常有用。

支持的关联types

  • 一对多
  • 许多到许多
    • 交叉适配器的优势
  • 一对一
  • 单程

计划的关联types

  • 通过协会

原始post

我是Sails的ORM的作者Waterline。 水线是全新的,我们一直在增加function。 目前我们没有对协会的支持,但是它是路线图的下一个。 我们制定了一个我认为大多数人会喜欢的协会的API。 您可以在[Proposed Sails Associations API] [1]中查看正在进行的工作和build议的API。

接下来我们要处理协会和交易,并希望在下个月左右准备好。

同时,如果您使用的是MySQL或PostgreSQL适配器,它们都会公开一个原始的.query()方法,允许您传入一个手工构build的SQL查询并执行它。 我完全意识到这不是理想的,但应该让你继续build设你的应用程序,而我们得到协会和联接的支持。

查询方法的函数签名是:

 Model.query(<sql query>, <optional data>, callback); 

粒子香蕉的例子工作,但实际上应该使用像“var实例=新User._model(值)”的“新”。 我使用下面的代码,它的工作原理。

 Accounts.query(query, function(err, accounts) { if (err) return fn(err); accounts = _.map(accounts, function(account) { return new Accounts._model(account); }); fn(null, accounts); });