Mit*_*pky 6 node.js bookshelf.js knex.js
我有一个类似于以下的模型:
var ScholarlyPaper = Bookshelf.Model.extend({
tableName: 'papers',
paragraphs: function() {
return this.hasMany(Paragraph).through(Section);
},
sections: function() {
return this.hasMany(Section);
}
});
var Section = Bookshelf.Model.extend({
tableName: 'sections',
paragraphs: function() {
return this.hasMany(Paragraph);
}
scholarlyPaper: function() {
return this.belongsTo(ScholarlyPaper);
}
});
var Paragraph = Bookshelf.Model.extend({
tableName: 'paragraphs',
section: function() {
return this.belongsTo(Section);
},
scholarlyPaper: function() {
return this.belongsTo(ScholarlyPaper).through(Section);
},
author: function() {
return this.belongsTo(Author);
}
});
var Author = Bookshelf.Model.extend({
tableName: 'authors',
paragraphs: function() {
return this.hasMany(Paragraph);
}
});
Run Code Online (Sandbox Code Playgroud)
使用Bookshelf.js,给定一个学术论文ID和作者ID,我如何得到论文中作者没有写一个段落的所有部分?
我面临的特殊挑战是我没有办法在相关的表上添加where子句(例如'where paragraphs.author_id!= author_id).
function(authorId, paperId, success, failure) {
new ScholarlyPaper({id: paperId}).load({sections: function(qb) {
qb.whereNotExists(function() {
this.from('paragraph')
.whereRaw('paragraph.section = section.id')
.where('paragraph.author_id', '=', authorId);
});
}}).then(function(paper) {
success(paper.related('section'));
}, failure);
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8495 次 |
| 最近记录: |