我试图使用sqlite3
模块创建内存SQLite数据库并将adm-zip
模块保存到zip文件中。到目前为止,我已经能够创建一个内存数据库并向它添加数据,但是我一直没有找到方法将它存储在通过adm-zip
制作的zip中,因为它需要文件,缓冲区或字符串。使用ADM-ZIP(Node.js)将SQLite存储到内存数据库中
我的问题是:sqlite3
模块是否支持存储或保存为缓冲区?如果没有,那么当脚本同时用作可请求的模块和命令行脚本时,如何在Node.js中存储临时文件是一个明智的解决方案?
我已经包含了我用来测试下面的代码和一个可复制的要点。
main.js
var fs = require('fs'),
admzip = require('adm-zip'),
sqlite3 = require('sqlite3').verbose(),
zip = new admzip(),
db = new sqlite3.Database('test.sqlite');
// db = new sqlite3.Database(':memory:');
db.serialize(function() {
db.run('CREATE TABLE IF NOT EXISTS test(id INTEGER PRIMARY KEY, name TEXT);');
db.run('INSERT OR IGNORE INTO test(name) VALUES ("neogeek");');
});
zip.addFile('README.md', '#SQLite3 + ADM-ZIP Test');
// zip.addFile('db.sqlite', db);
db.close();
fs.writeFileSync('test.zip', zip.toBuffer(), 'utf8');
的package.json
{
"private": true,
"dependencies": {
"sqlite3": "3.0.2",
"adm-zip": "0.4.4"
}
}
https://gist.github.com/neogeek/70c80c7ddaf998bee4bd
大给予好评这里。这真的很有用。 – Lolums 2015-12-02 06:43:25