node-js-mysql查询,其中id=ARRAY
node js mysql query where id = ARRAY?
我正在提取列出的用户的数据,我有一个像这样的用户数组
var result_user_id = [
{
"id": 19
},
{
"id": 20
}
];
我试过类似的东西
connection.query(
"select * from `contents` where `user_is` IN "+ result_user_id,
function( err_user, result_user ) {
}
);
但无法获取相关数据。如何在nodejs中做到这一点。
var o =[
{
"id": 19
},
{
"id": 20
}
];
var arr = o.map( function(el) { return el.id; });
connection.query( "select * from `contents` where `user_is` IN ("+ connection.escape(arr)+")", function( err_user, result_user ) { });
可以使用connection.aescape()、mysql.aescapee()或pool.escape。
我知道这个问题有点老,但我通过谷歌搜索找到了它,并偶然发现了同样的问题。这是我找到的最简单的解决方案:
var result_user_id = [
{
"id": 19
},
{
"id": 20
}
];
var result_array = [];
for (var i = 0; i < result_user_id; i++) {
result_array[i] = result_user_id[i].id;
}
connection.query( "select * from contents where user_is IN (?)", [result_array], function( err_user, result_user ) { });
如果您想利用安全逃生(?),可以执行以下操作:
connection.query('SELECT FROM `contents` WHERE `user_is` IN (' +
Array(result_user_id.length + 1).join('?').split('').join(',') + ')', result_user_id.map(p => p.id), function(err, result_user){});
不能只将变量result_user_id
按原样放入sql中。试试类似的东西:
for (var i=0, len=result_user_id.length; i<len; i++){
userIds += result_user_id[i].id + ",";
}
然后在您试图执行的sql中使用userId而不是result_user_id。
以下是如何使用es6语法:
const inClause = ids.map(id=>"'"+id+"'").join();
const query = `SELECT * FROM docs d WHERE d.id IN (${inClause})`;
相关文章:
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- difference between '$(<%= DDL.ID %>) & $('
- 使用Javascript获取所选选项ID
- 如何为json对象中的段发送array[]
- 根据id将json数组组合为一个json数组
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 对id以某个字符串开头的元素进行计数
- Array.length似乎不起作用;console.log则显示其他情况
- 如果元素's的ID以数字开头
- 如何迭代Array.prototype函数
- 通过id和class属性获取元素
- 根据选项卡内部的文本链接中的哈希ID动态选择jqueryUI选项卡
- 使用当前日期生成随机id
- Javascript Array ID's
- node-js-mysql查询,其中id=ARRAY
- 在Angularjs中从array中获取数据并传递给id
- 使用id编号从JavaScript array.object获取值
- 如何查询id IN [some-array-of-numbers]"在azure移动服务中(服务器脚本)
- 如何循环遍历Array of Objects以查找ID,然后返回一个兄弟键
- Id's in array javascript