2

データベースデータを取得するための単純なクラウド機能が機能していません。Firebaseタイムアウトのクラウド機能

getusermessage()が動作していない

エラー:データベースの結果を取得するための

Function execution took 60002 ms, finished with status: 'timeout'

Index.JS。

const functions = require('firebase-functions'); 
const admin = require('firebase-admin'); 
admin.initializeApp(functions.config().firebase); 
const cors = require('cors')({origin: true}); 

// Take the text parameter passed to this HTTP endpoint and insert it into the 
// Realtime Database under the path /messages/:pushId/original 
exports.addMessage = functions.https.onRequest((req, res) => { 
    // Grab the text parameter. 
    const original = req.query.text; 
    // Push the new message into the Realtime Database using the Firebase Admin SDK. 
    admin.database().ref('/messages').push({original: original}).then(snapshot => { 
    // Redirect with 303 SEE OTHER to the URL of the pushed object in the Firebase console. 
    res.redirect(303, snapshot.ref); 
    }); 
}); 

// Listens for new messages added to /messages/:pushId/original and creates an 
// uppercase version of the message to /messages/:pushId/uppercase 
exports.makeUppercase = functions.database.ref('/messages/{pushId}/original') 
    .onWrite(event => { 
     // Grab the current value of what was written to the Realtime Database. 
     const original = event.data.val(); 
     console.log('Uppercasing', event.params.pushId, original); 
     const uppercase = original.toUpperCase(); 
     // You must return a Promise when performing asynchronous tasks inside a Functions such as 
     // writing to the Firebase Realtime Database. 
     // Setting an "uppercase" sibling in the Realtime Database returns a Promise. 
     return event.data.ref.parent.child('uppercase').set(uppercase); 
    }); 

var db = admin.database(); 
exports.getUserMessage = functions.https.onRequest((req, res) => { 
var query = db.ref("messages").orderByKey(); 
query.once("value") 
    .then(function(snapshot) { 
    snapshot.forEach(function(childSnapshot) { 
     var key = childSnapshot.key; 
     // childData will be the actual contents of the child 
     var childData = childSnapshot.val(); 
    }); 
}); 
}); 

何が間違っているのですか?

答えて

5

あなたは3つの機能のうちどれがタイムアウトしているかは言いませんでしたが、どちらを推測するかはわかります。 HTTPS機能getUserMessageがクライアントへの応答を生成していません。クラウド機能は応答を生成するために(デフォルトで)60秒間待機し、そうでなければ機能を停止し、そのメッセージをログに残します。

HTTPS関数内のすべてのコードパスは、クライアントに対して何らかの応答を生成する必要があります。

+0

@あなたが推測しているとおりですが、私は雲の機能を試していると答えたのですが、答えは出ませんでした。 'getUserMessage()'で間違っていることを指摘できますか? –

+0

私が言ったように、あなたの関数はクライアントへの応答を生成していません。あなたは絶対に応答を送る必要があります。詳細についてはHTTPS関数のドキュメント、特に「HTTP関数の終了」を参照してください。 https://firebase.google.com/docs/functions/http-events –

+0

@twister_void Doug関数の返信文がありません –

関連する問題