我有一些使用knex和bookshelf设置Sqlite3数据库和表的工作代码。但它看起来并不像我在Bookshelf网站上看到的那样。 This blog post似乎表明创建内容是knex的工作,但我也没有在Bookshelf网站上看到Bookshelf.conn
内容。我可以使用类似这样的代码来创建Postgres数据库和表吗?
这是有效的代码(package.json有" knex":" ~0.5.7"" bookshelf":" ~0.6 .4",目前他们都在0.9):
var Bookshelf = require('bookshelf');
var path = require('path');
var db = Bookshelf.initialize({
client: 'sqlite3',
connection: {
host: '127.0.0.1',
user: 'your_database_user',
password: 'password',
database: 'database_name',
charset: 'utf8',
filename: path.join(__dirname, '../db/mydb.sqlite')
}
});
db.knex.schema.hasTable('urls').then(function(exists) {
if (!exists) {
db.knex.schema.createTable('urls', function (link) {
link.increments('id').primary();
link.string('url', 255);
link.string('base_url', 255);
link.string('code', 100);
link.string('title', 255);
link.integer('visits');
link.timestamps();
}).then(function (table) {
console.log('Created Table', table);
});
}
module.exports = db;
答案 0 :(得分:2)
我不熟悉Bookshelf
或Knex
,但你试过这个吗?
var db = Bookshelf.initialize({
client: 'postgresql',
connection: {
host : '127.0.0.1',
user : 'your_database_user',
port : '5432',
password : 'your_database_password',
database : 'myapp_test',
charset : 'UTF8_GENERAL_CI'
}
});
答案 1 :(得分:0)
一旦我尝试使用0.9版本的knex和bookshelf运行上面的代码,我得到了响应“Bookshelf.initialize已被弃用,直接传递knex:require('bookshelf')(knex)”。正如评论中所提到的,Bookshelf.initialize在Bookshelf内部使用了“已经配置好的Knex实例”,但显然在2014年3月之间的某个时间到现在已经被淘汰了。
答案 2 :(得分:0)
var knex = require('knex')(
{
client: 'postgresql',
connection: {
host : '127.0.0.1',
user : 'your_database_user',
port : '5432',
password : 'your_database_password',
database : 'myapp_test',
charset : 'UTF8_GENERAL_CI'
}
});
var bookshelf = require('bookshelf')(knex);