0

私はFirebase用のCloud Functionsを学習しています。firebase cloud "key"パラメータでデータを書き込む

https://xxx.cloudfunctions.net/addMessageSet?text=goodboy&key=testKey 

そしてリアルタイムデータベースにtestKey:goodboyを設定します。私が欲しいのと同様に、URLパラメータのキーと値を渡しています。

私が知っているのはpush()(私が正しく理解していれば)ユニークなキーを生成しますが、毎回自分のキーを使用したいと思います。 set()が動作するかどうかはわかりません。

私の問題はpush({originalKey:original})は期待どおりに動作しません。それは書き込みます:

originalKey: goodboy 

ここでは、はURLのパラメータではありません。これは可能なのでしょうか他の解決策ですか?

exports.addMessageSet = functions.https.onRequest((req, res) => { 
    // Grab the text parameter. 
    const original = req.query.text; 
    const originalKey = req.query.key; 
    admin.database().ref('/messages/').push({originalKey:original}).then(snapshot => { 
     console.log('goodboy', original, originalKey); 
     res.redirect(303, snapshot.ref); 
    }); 
}); 

答えて

1

あなたはfirebaseであなたがパスにあなたのキーで設定を使用する必要があり、別のfirebase生成せずに生成しているキー

admin.database().ref('/messages/' + originalKey).set(original).then(snapshot => { }); 
// if originalKey is not a string use String(originalKey) 

あなたが言っについてoriginalKey URLをbeeingていないが、すべてのものを使用したい場合URLベースの場合、このようにあなたは

myDB 
|_ messages 
    |_ originalKey: original 

なく

myDB > messages > originalKey > original 
をやっています10

messagesノードの後に​​別の鍵が必要な場合は、日付のUNIX番号を使用することをお勧めします。これを処理するにはmomentJSが良いです。

希望すると助かります

0

確かにユニークなキーを生成します()プッシュの使用:

のコードは以下のようなものです。 set()またはupdate()のいずれかを使用する必要があります。

set()を使用すると、子ノードを含む指定された場所のデータが上書きされることに注意してください。

関連する問題