我正在努力获取列出的用户的数据,我有一组用户,如
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中做到这一点。
答案 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")
}