2017-01-03 8 views
0

下記のコードを参照してください。私はfirebaseデータベースにデータをプッシュするAWSラムダ関数に取り組んでいます。私の問題は、私がそれを動作させることができた唯一の方法は、ハンドラの内部でコールバック関数にsetTimeoutを設定することです。なぜこれが必要なのか分かりません。コールバックが始まる前にリクエストがfirebaseに送信されません。コールバックに遅れがないかぎり、AWS Lambdaからデータをファイヤーベースにプッシュ

これは機能しません。

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}); 
}; 

これは機能します。代わりに.then

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) 
}; 

答えて

4

ワイヤー.pushは約束を返し以来:

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}); 
    }); 
}; 
+0

感謝を!プッシュに利用できる約束があるとは考えていませんでした。私は週末中にそれに苦しんでいた! – mattc19

関連する問題