node js mysql query其中id = ARRAY?

时间:2015-11-27 12:16:39

标签: javascript mysql node.js

我正在努力获取列出的用户的数据,我有一组用户,如

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 ) {

   }
);

但无法获取相关数据。 如何在节点js中做到这一点。

5 个答案:

答案 0 :(得分:5)

var o =[
  {
    "id": 19
  },
  {
    "id": 20
  }
];
var arr = o.map( function(el) { return el.id; });
connection.query( "select * from `contents` where `user_is` IN "+ arr, function( err_user, result_user ) { });

答案 1 :(得分:2)

如果您希望利用安全转义(?),您可以执行以下操作:

 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){});

答案 2 :(得分:1)

你不能按原样取变量result_user_id并将其放入sql中。尝试类似:

for (var i=0, len=result_user_id.length; i<len; i++){
   userIds += result_user_id[i].id + ",";
}

然后在您尝试执行的sql中使用userIds而不是result_user_id。

答案 3 :(得分:1)

这是使用es6语法的方法:

preg_replace

答案 4 :(得分:0)

我知道这个问题有点老了,但是我通过Google搜索找到了,却偶然发现了同样的问题。这是我找到的最简单的解决方案:

componentDidMount() {
let firebase = this.context
console.log(this.props);    
const db = firebase.firestore();
var turmarkers =[];

this.setState({isSignedin:this.props.isSignedin})
console.log(this.state.isSignedin);    
this.state.isSignedin  ? 
db.collection("Markets").get().then((querySnapshot) => {
  querySnapshot.forEach((doc) => {
      var mdata = doc.data()
      mdata["key"] = doc.id  
      turmarkers.push(mdata)

  });

  this.setState({
      mapdata:turmarkers
  });
 })    
:
console.log("this is not a user")    
}