6

我正在使用sqlite3NPM 包。我想将 JSON 存储在我的数据库列之一中。我知道 SQLite 本身能够存储 JSON https://www.sqlite.org/json1.html,但我不一定确定如何通过 Node.js 做到这一点。

以前有没有人遇到过这种情况,使用sqlite3NPM 包存储 JSON?使用轻量级 NoSQL 数据库会更好吗?

4

1 回答 1

9

sqlite3 包默认支持 Sqlite JSON1 扩展。对 sqlite3 包提供的示例稍作改动:

const sqlite3 = require('sqlite3').verbose();
const db = new sqlite3.Database(':memory:');

db.serialize(function() {
    db.run('CREATE TABLE lorem (info TEXT)');
    let stmt = db.prepare('INSERT INTO lorem VALUES(json(?))');
    for (let i=0; i<10; i++) {
        stmt.run(JSON.stringify({ a: i }));
    }
    stmt.finalize();

    db.each('SELECT rowid AS id, json_extract(info, \'$.a\') AS info FROM lorem', function(err, row) {
        console.log(row.id + ": " + row.info);
    });
});

请注意,对于某些包配置或安装,默认情况下可能不包含 JSON1 扩展。如果这对您不起作用,请参阅 Mike Hardy 对此答案的评论。

于 2019-01-29T19:54:46.523 回答