下面的代碼應該把一個字符串作爲一個輸入(這裏是inMessage)並且將它分開。然後,它向Firebase實時數據庫查詢關聯的鍵和值,並用檢索到的值替換該單詞。這個修改後的字符串必須作爲輸出返回。如何連接數組對象和字符串以獲取Javascript中的字符串?
現在,我似乎無法找到一種方法來使'味精'一個正確的字符串。如果我硬編碼一個字符串,而不是味精,我得到輸出正確呈現。那麼如何讓msg成爲一個合適的字符串呢? (我已經試過「」的toString(),字符串()和JSON.stringify()括起來 - 必須有我丟失的東西在這裏)
function queryDB(senderID, inMessage){
var arr=inMessage.split(" ");
console.log(arr);
var i;
console.log('inside queryDB');
var msg="";
for(i=0;i<arr.length;i++){
var x = 'https://oreo-fd681.firebaseio.com/'+arr[i]+'.json';
request({
url: x,
method: 'GET'
}, function(error, response, body) {
console.log(response.body);
if (error) {
console.log('Error making api call ' + error);
} else if (response.body.error){
console.log('Error making api call' + response.body.error);
}
else if(response==null) {
//if not found in DB concatenate whatever arr[i] holds
callback1();
}
else {
//else concatenate the found key
var n=JSON.parse(response.body);
//remove the quotes associated with key value
callback2(JSON.stringify(n.key).replace(/['"]+/g, ''));
}
});
function callback1(){
msg+=(arr[i]);
msg+=" ";
console.log(msg);
}
function callback2(add){
msg+=(add);
msg+=" ";
console.log(msg);
}
}
//add quotes back - not sure of this
sendMessageToUser(senderID, ("\""+msg+"\""));
}
這就像一個魅力!感謝@trincot :)你錯過了在你的代碼中聲明'n'的意思。將調查Promise.all –
是的,我現在用它應該是的表達式替換'n'。 – trincot