2014-06-10 3 views

ответ

8

Под капотом bookshelf использует knex (который в текущей версии вы должны явно использовать для создания экземпляра).

Если вы установите клиент, чтобы быть в настройках sqlite3 и указать правильный путь в connection объекта (свойство filename), то он будет подключать или создавать по мере необходимости (предостережение: если предположить, вы чтения/записи в файл место назначения).

Причина, по которой файл базы данных не просто создан, заключается в том, что вам нужно сначала написать запись, поэтому попробуйте создать схему (knex schema builder). Затем вы увидите, что файл создан.

Чтобы быть немного более четко - здесь вроде того, что вы ищете:

var path = require('path') 
    , fs = require('fs') 
    , knex = require('knex') 
    , bookshelf = require('bookshelf') 
    , dbFile = path.join(__dirname, 'app.db') 
    , db = null // bookshelf db instance 

// init db 
db = bookshelf(knex({ 
    client: 'sqlite3' 
    , connection: { filename: dbFile } 
})) 

// create a schema if no db found 
fs.exists(dbFile, function(exists) { 
    if (!exists) { 
     db.knex.schema.createTable('test_table', function(table) { 
      table.increments() 
      table.string('some_col') 
     }) 
    } 
}) 

// ... do other stuff here ... 
+0

Я думаю, что knex создает файл при создании подключения, так что вы, вероятно, лучше использовать 'createTableIfNotExists' – Mr5o1