Node.js sqlite3 IN 运算符
Node.js sqlite3 IN operator
所以我目前正在尝试在 Node.js 中进行查询:
// friends is an array object
db.all('SELECT email ' +
'FROM users' +
'WHERE email in ?', friends, function(err, rows) {
if (!err) {
我知道您可以为每个“?”传递一个参数数组符号,但在这种情况下是否可以使用 IN 运算符?如果不是,我应该进行字符串连接还是准备语句?
db.all('SELECT email ' +
'FROM users' +
'WHERE email in ( ' + friends.map(function(){ return '?' }).join(',') + ' )',
friends,
function(err, rows) {
if (!err) {
asbel 的出色回答略有不同:
db.all(
`SELECT email FROM users WHERE email in (${ friends.fill('?') })`,
friends,
callback
);
// friends is an array object
db.all(`SELECT email FROM users WHERE email in ${ friends.map(() => "?").join(",") }`,
friends, (err, rows) => {
if (!err) {}
})
所以我目前正在尝试在 Node.js 中进行查询:
// friends is an array object
db.all('SELECT email ' +
'FROM users' +
'WHERE email in ?', friends, function(err, rows) {
if (!err) {
我知道您可以为每个“?”传递一个参数数组符号,但在这种情况下是否可以使用 IN 运算符?如果不是,我应该进行字符串连接还是准备语句?
db.all('SELECT email ' +
'FROM users' +
'WHERE email in ( ' + friends.map(function(){ return '?' }).join(',') + ' )',
friends,
function(err, rows) {
if (!err) {
asbel 的出色回答略有不同:
db.all(
`SELECT email FROM users WHERE email in (${ friends.fill('?') })`,
friends,
callback
);
// friends is an array object
db.all(`SELECT email FROM users WHERE email in ${ friends.map(() => "?").join(",") }`,
friends, (err, rows) => {
if (!err) {}
})