【发布时间】:2016-02-16 19:15:27
【问题描述】:
当我.fetchAll({ withRelated: 'backfire' }); 时,我最终在输出中得到一个名为 backfire 的属性,其值为 {}。在 knex 调试模式下,我清楚地看到 select "backfire".* from "backfire" where "backfire"."id" in (?); 在复制/粘贴到 sqlite3 控制台时有效(当然是在输入有效 ID 之后)。所以我知道我的模型一定是正确的。
Knex 迁移
exports.up = function(knex, Promise) {
return knex.schema.createTable("backfire", function(table) {
table.increments("id").primary();
table.string("response").notNullable();
table.string("created_by").notNullable();
table.timestamps();
}).then(function(){
return knex.schema.createTable("backfireTrigger", function(table) {
table.increments("id").primary();
table.string("trigger").notNullable();
table.integer("backfire_id").unsigned().notNullable().references("id").inTable("backfire");
table.string("created_by").notNullable();
table.timestamps();
});
});
};
Models.js
module.exports = function(bookshelf) {
var Backfire = bookshelf.Model.extend({
tableName: 'backfire',
backfireTriggers: function() {
return this.hasMany(BackfireTrigger);
}
});
var BackfireTrigger = bookshelf.Model.extend({
tableName: 'backfireTrigger',
backfire: function() {
return this.belongsTo(Backfire);
}
});
return {
Backfire: Backfire,
BackfireTrigger: BackfireTrigger
};
}
我的用法
function getAllTriggers() {
var self = this;
return new self.models.BackfireTrigger()
.fetchAll({
withRelated: ['backfire']
});
}
【问题讨论】:
-
您使用的是哪个底层数据库?我在 SQLite3 上试过你的代码没有问题:(gist.github.com/flaviodesousa/1465625173202fda563e)
-
SQLite3 也许我还有另一个问题。感谢您在本周寻找和挖掘更多信息并报告。
-
运气好吗@VictorioBerra ?
-
我没有,但我可能需要一段时间才能再次处理此问题。有没有办法“关闭”这个问题?
标签: node.js bookshelf.js knex.js