js水线查询填充
Sails.js Waterline query populate
假设一个用户可以有多个帐户,一个帐户可以有多个用户,而一个帐户总是有一个所有者。在水线查询语法中有更好的方法来写这个吗?
User.findOneByEmailAddress('user@acme.com').then(function(user) {
User.findOne(user.id)
.populate('accounts', {owner: user.id})
.then(console.log);
});
如果可能的话,我想我更喜欢这样:
User.findOneByEmailAddress('user@acme.com')
.populate('accounts', {owner: this.id})
.then(console.log);
虽然在这种情况下,我认为必须总是发生双查询,但如果populate()可以引用主叫方ID,它肯定会使代码更容易阅读。
我知道这个例子有点做作。
我也试过这个:
User.findOneByEmailAddress('user@acme.com').then(function(user) {
user.isAccountOwner().then(console.log);
});
在我的模型中,我定义了一个实例方法:
isAccountOwner: function() {
var _this = this;
return new Promise(function(resolve, reject) {
User.findOne(_this.id)
.populate('accounts', {owner: _this.id})
.then(function(user) {
resolve(!! user.accounts.length > 0);
})
.fail(function(err) {
reject(err);
});
});
我花了几分钟才弄清楚你想要什么,遗憾的是答案是否定的,目前没有办法访问populate
标准中"父"查询的结果。这是一个有趣的想法,你应该考虑发布到Github作为一个功能请求。使用this
是不行的,但它可以是这样的:
User.findOneByEmailAddress('user@acme.com')
.populate('accounts', {owner: {parent: 'id'}})
相关文章:
- 如何在下拉列表更改时自动填充mysql查询结果中的文本框值
- 通过位置栏更改查询字符串,AJAX加载的菜单不会't在没有硬刷新的情况下重新填充
- Mongoose,按填充字段对查询进行排序
- 如何填充嵌套查询
- 在“onexit”或“onsubmit”之后,查询mysql并填充表单字段,而无需离开页面php js
- 使用下拉列表中的值查询 MySQL 数据库,然后使用结果填充文本字段而不刷新页面
- 使用基于查询字符串参数的 Angular 填充选择元素
- 对填充字段的 MongoDB 查询
- 使用组合框填充另一个组合框,以便用户可以运行查询
- j查询基于值的填充圆圈
- 如何使用 Javascript 或 jQuery 从 URL 获取查询字符串以填充选择值
- 填充字段,该字段是单个查询中嵌入数组的属性
- 在Mongoose中使用RegExp填充后进行查询
- 搜索查询>填充下拉字段
- 在mysql中使用javascript变量查询并填充listview
- 如何使用SQL查询中的数据填充Javascript动态树
- 谷歌脚本'GetValue'不会't读取填充有'查询'在电子表格中
- 多对多关系-在查询-Keytonejs中填充相关数据
- 使用自己的Facebook访问令牌查询数据以填充数据库
- 如何使用$.get使用Rails查询填充列表