使用bookshelf.js创建SQLite数据库

3
如何使用bookshelf.js创建一个新的sqlite3数据库文件?如果数据库文件存在,则连接到它;如果数据库文件不存在,则创建一个新的数据库文件。
谢谢。
1个回答

9
在底层,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 ...

我认为Knex在创建连接时会创建文件,因此最好使用createTableIfNotExists - Mr5o1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接