2014-06-10 211 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