将数据从 AWS Lambda 推送到 firebase 将不起作用,除非回调有延迟
Pushing data to firebase from AWS Lambda won't work unless there is a delay on the callback
见下面的代码。我正在研究将数据推送到 firebase 数据库的 AWS lambda 函数。我的问题是我能够让它工作的唯一方法是在我的处理程序内的回调函数上放置一个 setTimeout。我不明白为什么这是必需的。在回调开始之前请求是否被发送到 firebase。
这行不通。
var admin = require("firebase-admin");
admin.initializeApp({
credential: admin.credential.cert("./info.json"),
databaseURL: "https://app.firebaseio.com"
});
exports.handler = (event, context, callback) => {
let x = admin.database().ref(`/12851/Winners`);
x.push(525555);
callback(null, {Winner: true});
};
虽然这确实有效。
var admin = require("firebase-admin");
admin.initializeApp({
credential: admin.credential.cert("./info.json"),
databaseURL: "https://app.firebaseio.com"
});
exports.handler = (event, context, callback) => {
let x = admin.database().ref(`/12851/Winners`);
x.push(525555);
setTimeout(()=>{
callback(null, {Winner: true});
},1500)
};
转入 .then
因为 .push
returns 一个承诺:
var admin = require("firebase-admin");
admin.initializeApp({
credential: admin.credential.cert("./info.json"),
databaseURL: "https://app.firebaseio.com"
});
exports.handler = (event, context, callback) => {
let x = admin.database().ref(`/12851/Winners`);
x.push(525555).then(function(){
callback(null, {Winner: true});
});
};
见下面的代码。我正在研究将数据推送到 firebase 数据库的 AWS lambda 函数。我的问题是我能够让它工作的唯一方法是在我的处理程序内的回调函数上放置一个 setTimeout。我不明白为什么这是必需的。在回调开始之前请求是否被发送到 firebase。
这行不通。
var admin = require("firebase-admin");
admin.initializeApp({
credential: admin.credential.cert("./info.json"),
databaseURL: "https://app.firebaseio.com"
});
exports.handler = (event, context, callback) => {
let x = admin.database().ref(`/12851/Winners`);
x.push(525555);
callback(null, {Winner: true});
};
虽然这确实有效。
var admin = require("firebase-admin");
admin.initializeApp({
credential: admin.credential.cert("./info.json"),
databaseURL: "https://app.firebaseio.com"
});
exports.handler = (event, context, callback) => {
let x = admin.database().ref(`/12851/Winners`);
x.push(525555);
setTimeout(()=>{
callback(null, {Winner: true});
},1500)
};
转入 .then
因为 .push
returns 一个承诺:
var admin = require("firebase-admin");
admin.initializeApp({
credential: admin.credential.cert("./info.json"),
databaseURL: "https://app.firebaseio.com"
});
exports.handler = (event, context, callback) => {
let x = admin.database().ref(`/12851/Winners`);
x.push(525555).then(function(){
callback(null, {Winner: true});
});
};