【发布时间】:2013-07-15 00:23:04
【问题描述】:
谁能指导我如何设置关系模式并在sails.js 中执行连接?
【问题讨论】:
标签: node.js orm sails.js waterline
谁能指导我如何设置关系模式并在sails.js 中执行连接?
【问题讨论】:
标签: node.js orm sails.js waterline
Waterline 正式支持关联
借助 Sails 和 Waterline,您可以跨多个数据存储关联模型。这意味着即使您的用户住在 PostgreSQL 中并且他们的照片位于 MongoDB 中,您也可以与数据进行交互,就好像他们一起住在同一个数据库中一样。您还可以使用相同的适配器建立跨越不同连接(即数据存储/数据库)的关联。例如,如果您的应用需要访问/更新存储在公司数据中心的 MySQL 数据库中的旧配方数据,而且还需要从云中全新的 MySQL 数据库存储/检索成分数据,这将派上用场。
我是 Waterline 的作者,它是 Sails 中使用的 ORM。水线是品牌 新的,我们一直在添加功能。目前我们没有 支持协会,但它是路线图上的下一个。我们解决了 我认为大多数人会真正喜欢的用于关联的 API。你 可以在以下位置查看正在进行的工作和建议的 API:[Proposed Sails 关联 API][1]。
接下来我们将处理关联和交易,并希望 让他们在下个月左右准备好。
同时,如果您使用的是 MySQL 或 PostgreSQL 适配器 它们都公开了一个原始的
.query()方法,该方法允许您传入一个 手工构建的sql查询并执行。我完全意识到这一点 不理想,但应该允许您继续构建您的应用程序,同时 我们得到了对关联和加入的支持。查询方法的函数签名是:
Model.query(<sql query>, <optional data>, callback);
【讨论】:
Model.query 方法的文档?
var instance = User._model(values)
粒子香蕉中的示例有效,但实际上应该使用“新”,如“var instance = new User._model(values)”。我正在使用以下代码,它可以工作。
Accounts.query(query, function(err, accounts) {
if (err)
return fn(err);
accounts = _.map(accounts, function(account) {
return new Accounts._model(account);
});
fn(null, accounts);
});
【讨论】:
new Accounts._model() 中没有执行 I/O,因此它不是阻塞的,并且不会从异步中获得任何收益。