我有三個文件:user.js的,influencer.js,& validate.js如何在使用多個依賴於另一個模塊結果的模塊導出時傳遞變量?
在user.js的,我進口./influencer(如VAR =影響者)& ./validate(如VAR =有效)。
我在user.js的功能:
addAccount: function(){
return functions.database.ref('/acct/{accountID}/name/').onCreate(event => {
var accountID = event.params.accountID;
var name = JSON.stringify(event.data.val()).replace(/['"]+/g, '');
console.log("New Account Added ("+accountID+")");
console.log("Nickname: " +name);
influencer.getIG(name);
var data = influencer.data;
validate.validateThis(data);
});
}
隨着influencer.getIG(名字),我傳遞我們上面的功能getIG(influencer.js內)定義的名稱。這像一個魅力。結果是JSON正文。
我現在要做的就是取得這個JSON正文結果並將它傳遞給validate函數(在validate.js中)。在influencer.js中,我還添加了「exports.data = data;」。
這樣說,我似乎無法弄清楚如何將「data」傳遞給validate.js。我將它記錄下來,並返回undefined。我在運行validateThis(data)之前添加了一個超時,但仍未定義。驗證功能本身非常有效;我測試過了。但顯然,我不是這樣做的正確方法。
這是我influencer.getIG功能:
module.exports = {
getIG: function (name) {
var url = "https://www.instagram.com/"+name+"/?__a=1"
console.log(url);
request({
url: url
}, function (error, response, body) {
var data = JSON.parse(body);
console.log(data);
exports.data = data;
})
}
}
我怎樣才能通過第二模塊在我的函數的第三個模塊的結果呢?我究竟做錯了什麼?
聽起來像'influencer.getIG()'是異步的,這意味着你需要一個回調或者一個承諾來知道它何時完成,然後你就可以訪問'influencer.data'。你能編輯你的問題來包含'influencer.getIG'的代碼嗎? –
是influencer.getIG(名稱)異步嗎?如果是,則可以在檢索實際數據之前調用data = influencer.data。如果是這樣的話,你可能不得不使用回調或承諾。 –
好的,我會用這些細節更新問題。然而,我確實添加了一個很大的超時,以確保在讓validateThis(data)運行之前影響器.getIG()會完成。但它仍然返回undefined。 – ryangineer