这是我的代码我做错了什么:
var list = [];
if (type === "0") {
console.log("# send to users #");
var query = "SELECT user_id FROM users WHERE user_id = " + id;
connection.query(query, function(err, rows) {
if (err) {
console.log(err);
throw err;
} else {
if (rows.length > 0) {
for (i = 0; i < rows.length; i++) {
list.push(rows[i].user_id);
}
}
}
});
}
if (type === "1") {
console.log(list); //empty
console.log("# send to group users #");
var query = "SELECT *FROM group_users WHERE group_id = " + id;
connection.query(query, function(err, rows) {
if (err) {
console.log(err);
throw err;
} else {
if (rows.length > 0) {
for(i=0;i<rows.length;i++){
if(list.user_id !== rows[i].group_user_id){
console.log(rows[i].group_user_id); // need to display only those user who is not in the users table
}
}
}
}
});
}
我的目的是仅向不同的用户发送更新联系人消息, 由于用户可能在组中连接,所以我想只是不同的用户。
答案 0 :(得分:0)
不清楚你想要做什么,但有些事情你做错了。首先,当键入===&#39; 1&#39;时,列表将始终为空,我认为这就是您正在讨论的问题。 其次,列出一个数组,所以这行代码......
if(list.user_id !== rows[i].group_user_id)
将永远不会按您的意愿工作,因为作为数组的列表没有名为&#39; user_id&#39;的键。 澄清一些概念:
var ex1 = { user_id: '123'};
var ex2 = [123];
console.log(ex1.user_id); //123
console.log(ex2[0]); //123
对于你所说的猜测你需要&#34;类型===&#39; 1&#39;&#34;的列表值。部分,所以你应该在两个if语句之前得到那些值,然后用你喜欢的数据做,对于我所理解的,你不需要回调来处理这个。 像这样:
var list = getListValues();
if(type==='0'){
//do whatever you want
}
if(type==='1'){
//now you have the list values here
}
希望这有帮助。