我正在试验 Bookshelf,并制作了一个小程序来了解它是如何工作的。
不幸的是,它似乎并没有真正起作用,因为 Knex 抱怨它尚未初始化。
我使用的是 Bookshelf 0.3.1 版和 Knex 0.2.6 版。
当我运行我的简单测试程序时,我收到以下错误:
/home/joachimp/tmp/ks/db/node_modules/knex/knex.js:20 throw new Error('Knex 实例尚未初始化。'); ^ 错误:Knex 实例尚未初始化。 在 Knex (/home/joachimp/tmp/ks/db/node_modules/knex/knex.js:20:13) 在 _.extend.builder (/home/joachimp/tmp/ks/db/node_modules/bookshelf/bookshelf.js:384:14) 在查询(/home/joachimp/tmp/ks/db/node_modules/bookshelf/bookshelf.js:1294:35) 在 _.extend.query (/home/joachimp/tmp/ks/db/node_modules/bookshelf/bookshelf.js:379:14) 在新 Bookshelf.Sync (/home/joachimp/tmp/ks/db/node_modules/bookshelf/bookshelf.js:823:26) 在 _.extend.sync (/home/joachimp/tmp/ks/db/node_modules/bookshelf/bookshelf.js:389:14) 在 _.extend.save (/home/joachimp/tmp/ks/db/node_modules/bookshelf/bookshelf.js:263:24) 在对象。(/home/joachimp/tmp/ks/db/dbtest.js:20:6) 在 Module._compile (module.js:456:26) 在 Object.Module._extensions..js (module.js:474:10)
程序就是这样的:
var Bookshelf = require('bookshelf');
Bookshelf.Initialize('sqlite3', {
client: 'sqlite3',
connection: {
filename : './dbtest.sqlite3'
}
});
var TestModel = Bookshelf.Model.extend({
tableName: 'TestModel',
initialize: function() {
},
name: 'foo'
});
var test = new TestModel;
test.save(); // <- Line 20
console.log('All done');
文档很少,示例更是如此,或者我可能已经弄清楚了。
我也尝试过创建集合并将模型实例放入其中,并将同步对象与该insert
方法一起使用。所有与未初始化 Knex 的结果相同。
我错过了什么?我必须单独初始化 Knex 吗?而且(是的,我知道这是题外话)是否有任何简单的示例或教程可供学习?