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

Bri*_*yne 20 orm node.js sails.js waterline

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

par*_*ana 43

水线正式支持协会

概观

来自文档:

使用Sails和Waterline,您可以将模型与多个数据存储相关联.这意味着即使您的用户居住在PostgreSQL中并且他们的照片存在于MongoDB中,您也可以像在同一个数据库中一起生活一样与数据进行交互.您还可以使用相同的适配器来跨越不同的连接(即数据存储/数据库).例如,如果您的应用程序需要访问/更新存储在公司数据中心的MySQL数据库中的旧配方数据,而且还存储/检索来自云中全新MySQL数据库的成分数据,则此功能非常有用.

支持的关联类型

计划的关联类型


原帖

我是Waterline的作者,也就是Sails中使用的ORM.Waterline是全新的,我们一直在增加功能.目前我们没有对协会的支持,但它是路线图的下一个.我们为大多数人都非常喜欢的协会制定了一个API.您可以在以下位置查看正在进行的工作和建议的API:[Proposed Sails Associations API] [1].

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

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

查询方法的函数签名是:

Model.query(<sql query>, <optional data>, callback);
Run Code Online (Sandbox Code Playgroud)

  • 哪里可以找到`Model.query`方法的文档? (9认同)
  • 如何在查询中添加参数,我想可以使用<optional,data>来实现? (2认同)

小智 6

粒子香蕉的例子可以工作,但实际上应该像"var instance = new User._model(values)"那样使用"new".我正在使用以下代码,它的工作原理.

Accounts.query(query, function(err, accounts) {
  if (err)
    return fn(err);

  accounts = _.map(accounts, function(account) {
    return new Accounts._model(account);
  });

  fn(null, accounts);
});
Run Code Online (Sandbox Code Playgroud)

  • 在`new Accounts._model()`中没有执行I/O,所以它没有阻塞,并且不会因为异步而获得任何东西. (6认同)