Bookshelf.js渴望装载第三张桌子
Bookshelf.js Eager Loading Third Table
我正在与Bookshelf.js作斗争,我希望有人能帮我一把。
我的客户有各种类型的联系人(电子邮件地址、脸书、skype等)。因此,我将其分为三个表来规范类型。我似乎找不到如何正确查询和加载联系人类型。我可以通过轻松获取联系人
new Customer({id: 1}).fetch({withRelated: ['contacts']}).then((customer) => {
console.log(customer.toJSON());
})
但就我的一生而言,我似乎不知道如何将这些联系人与他们各自的类型相匹配。Rails在幕后做了很多这样的事情,男孩,我很后悔。。。
表格
customers = knex.schema.createTable('customers', function(t) {
t.increments('id').primary();
t.string('emailAddress').notNullable().unique();
t.timestamps(true, true);
});
contacts = knex.schema.createTable('contacts', function(t) {
t.increments('id').primary();
t.string('value').notNullable();
t.integer('contact_type_id').references('contact_types.id');
t.string('contactable_type').notNullable();
t.integer('contactable_id').notNullable();
});
contact_types = knex.schema.createTable('contact_types', function(t) {
t.increments('id').primary();
t.string('value').notNullable();
});
型号
const Customer = bookshelf.Model.extend({
tableName: 'customers',
contacts: function() {
return this.morphMany('Contact', constants.CONTACTABLE);
}
});
const Contact = bookshelf.Model.extend({
tableName: 'contacts',
contactable: function() {
return this.morphTo(constants.CONTACTABLE, 'Customer');
},
type: function() {
return this.belongsTo('ContactType');
}
});
const ContactType = bookshelf.Model.extend({
tableName: 'contact_types',
contacts: function() {
return this.hasMany('Contact');
}
});
我认为将withRelated数组中的关系链接起来就可以了。尝试以下操作:
new Customer({id: 1}).fetch({withRelated: ['contacts.type']}).then((customer) => {
console.log(customer.toJSON());
})
相关文章:
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的
- 显示浏览量最高的三篇文章
- 如何使用PHP和JS级联三个下拉列表
- 灯光问题(使用三个.js)
- 在三个.js中创建球体(例如地球)的磁力线
- 显示某个用户ID的某个标签的30张Instagram图片
- Bootstrap-三列相等;t更改'a'要素
- socket.io发射三次
- 什么'这是从第三个函数上的async 1st函数获得结果的更好方法
- javascript第三个XMLHttpRequest被拒绝.但前两个是允许的
- 将循环中的两个文本框相乘,并在第三个文本框上显示结果
- jQuery图像幻灯片,在停止后淡出到第一张图像
- 如何从三张图片中选择一张?其余的必须是看不见的
- 如何改变这三张.js脸的颜色
- 三.js:在立方体贴图中仅更改一张脸的图像
- 三张图片的jquery组合
- 我想创建一个视差滚动网站的三张图片,但只有两个卷轴工作
- Bookshelf.js渴望装载第三张桌子
- 猫头鹰旋转木马,带三张同步幻灯片
- flexslider的WP选项卡不会播放接下来的第二和第三张幻灯片