ira*_*ams 5 amazon-web-services firebase aws-lambda firebase-realtime-database alexa-skills-kit
我在Firebase中有一个数据库,我正在尝试从我的Alexa Skill中编写一些数据.该技能的Node.js代码位于AWS Lambda函数内,当运行该代码时,我想将一些数据推送到Firebase.
我已经测试了连接到Lambda之外的Firebase并推送到Firebase的代码,它完全按预期工作.以下是该代码:
var firebase = require('firebase');
firebase.initializeApp({
databaseURL: 'https://myapp.firebaseio.com',
serviceAccount: './myapp.json',
});
var cart = firebase.database().ref('/cart');
console.log(cart);
cart.push( {
item: 'apples', quantity: '1', amount: '0'
}, function(error) {
if (error) {
console.log("Data could not be saved." + error);
} else {
console.log("Data saved successfully.");
}
});
Run Code Online (Sandbox Code Playgroud)
从Lambda函数执行时,相同的代码不会向数据库实例推送任何内容.我在网上看到Lambda超时限制可能是这个的原因,所以我将超时限制增加到一分钟,它仍然没有按预期运行.我也尝试使用Firebase REST API而不是他们的Node.js SDK,但这也不起作用.从AWS Lambda中将数据推送到Firebase的正确方法是什么?
我也遇到过这个问题,我想出如何让它工作的唯一方法是延迟处理程序中的 lambda 回调函数。试试这个,让我知道它是否有效。
var firebase = require('firebase');
firebase.initializeApp({
databaseURL: 'https://myapp.firebaseio.com',
serviceAccount: './myapp.json',
});
exports.handler = (event, context, callback) => {
var cart = firebase.database().ref('/cart');
console.log(cart);
cart.push( {
item: 'apples', quantity: '1', amount: '0'
setTimeout(()=>{
callback(null, 'success');
},2000);
}, function(error) {
if (error) {
console.log("Data could not be saved." + error);
setTimeout(()=>{
callback(error);
},2000);
} else {
console.log("Data saved successfully.");
setTimeout(()=>{
callback(null, 'success');
},2000);
}
});
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1753 次 |
最近记录: |