Node.js sqlite3 IN 运算符

Posted

技术标签:

【中文标题】Node.js sqlite3 IN 运算符【英文标题】:Node.js sqlite3 IN operator 【发布时间】:2016-03-24 18:48:43 【问题描述】:

所以我目前正在尝试在 Node.js 中进行查询:

// friends is an array object
db.all('SELECT email ' +
       'FROM users' +
       'WHERE email in ?', friends, function(err, rows) 
           if (!err) 

我知道您可以为每个“?”传入一个参数数组。符号,但在这种情况下是否可以使用 IN 运算符?如果没有,我应该进行字符串连接还是准备语句?

【问题讨论】:

【参考方案1】:
db.all('SELECT email ' +
       'FROM users' +
       'WHERE email in ( ' + friends.map(function() return '?' ).join(',') + ' )', 
       friends, 
       function(err, rows) 
           if (!err) 

【讨论】:

【参考方案2】:

// friends is an array object
db.all(`SELECT email FROM users WHERE email in $ friends.map(() => "?").join(",") `,
    friends, (err, rows) => 
    if (!err) 
)

【讨论】:

【参考方案3】:

asbel 的出色答案略有不同:

db.all(
    `SELECT email FROM users WHERE email in ($ friends.fill('?') )`, 
    friends, 
    callback
);

【讨论】:

以上是关于Node.js sqlite3 IN 运算符的主要内容,如果未能解决你的问题,请参考以下文章

《SQLite3 — 运算符》

Node.js 说它不能加载 sqlite3 模块,但无论如何

使用 SQLite3 + Node.js 的最佳实践

node.js 上的 Sqlite3 产生 SQLITE_ERROR

使用 node.js 检查数据是不是包含在 SQLite3 数据库中

如何在运行 Node.js 的 Debian 上安装 sqlite3?