JavaScriptでFirebase関数を使用して既存のFirebaseDB配列に挿入する方法

フセイン

タイトルと著者による本の引用を保存して表示するアプリを作成しようとしています。バックエンドにFirebaseを使用しています。私のFirebaseデータ構造は次のようになります。

ここに画像の説明を入力してください

本の引用が追加されるとき、私は著者を知っています。そのため、見積もりを作成者に自動的に保存するために、FirebaseFunctionsを使用しようとしています。

私は2つのアプローチを試しました。

本が更新されたときに、著者からの引用と本からの引用をマージします。

exports.newQuotesTrigger = functions.database.ref('library/{bookAndAuthor}').onWrite((snap, context) => {
    const message = snap;
    console.log('Retrieved message content: ', message);

    const newValue = message.after.val();
    const oldValue = message.before.val();

    const author = snakeCase(newValue.author);
    admin.database().ref('authors/' + author).child('quotes').set(newValue.quotes);
    console.log('Updated author quotes');

    return message;
});

本から新しい引用と古い引用の違いをプッシュするだけです

exports.newQuotesTrigger = functions.database.ref('library/{bookAndAuthor}').onWrite((snap, context) => {
    const message = snap;
    console.log('Retrieved message content: ', message);

    const newValue = message.after.val();
    const oldValue = message.before.val();

    const newQuotes = newValue.quotes || [];
    const oldQuotes = oldValue.quotes || [];
    const diff = arrayDiff(newQuotes, oldQuotes);

    if (diff) {
        console.log('Quotes were updated for ', {title: newValue.title, author: newValue.author});
        const author = snakeCase(newValue.author);
        admin.database().ref('authors/' + author).child('quotes').push(diff);
        console.log('Updated author quotes');
    }

    return message;
});

どちらも更新引用符を適切に追加/挿入しません。Firebaseデータベース配列に追加/挿入する方法が見つかりませんでした。

ルノー・タルネック

You have to use update in order to "update specific children of a node without overwriting other child nodes", see:

https://firebase.google.com/docs/database/web/read-and-write#update_specific_fields

Your first piece of code should work with update if you slightly change your structure as follow with autogenerated Ids for the quotes

Database

author
    - nassim
      - quoteID1: "...."  <- ID auto generated
      - quoteID2: "...."  <- ID auto generated
      - quoteID3: "...."  <- ID auto generated

Cloud Function

Replace, in your first version of the code, these lines

    admin.database().ref('authors/' + author).child('quotes').set(newValue.quotes);
    console.log('Updated author quotes');
    return message;

by those ones

  const quotesObject = newValue.quotes;
  var updates = {};      

  Object.keys(quotesObject).forEach(function (key) {
    let quote = quotesObject[key];
    const newQuoteKey = firebase.database().ref('authors/' + author).child('quotes').push().key;
    updates[newQuoteKey] = quote ;
  });

  return admin.database().ref('authors/' + author).child('quotes').update(updates);

Another important point is that you are not returning a promise in your Cloud Functions. You should return the promise from the update (or set) and not the message. See https://www.youtube.com/watch?v=652XeeKNHSk&t=26s


自分で生成した引用符ID(0、1、2など)を順番に保持する必要がある場合は、前の値の配列を取得し、新しい引用符を追加して、の既存のセットを上書きすることにより、配列を操作する必要があります。新しい配列で引用します..多くの努力!特に、自動生成されたIDを使用すると、引用符の順序が失われることはありません。引用符は、書き込まれた順序で保存されます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Firebaseでforeachを使用せずに複数の配列を挿入する方法

分類Dev

laravelを使用して複数の配列をmysqlに挿入する方法

分類Dev

SQLServerを使用して既存の列にレコードを挿入する方法

分類Dev

Joltを使用して特定の配列要素に配列を挿入する方法

分類Dev

phpを使用してphpmyadminに配列の配列を挿入する方法

分類Dev

PHPPDOを使用してMySQLに複数の行を持つ複数の配列を挿入する方法

分類Dev

NpgSqlを使用して文字列の配列をPostgresql列に挿入する方法

分類Dev

javascriptで関数を使用して配列に要素を追加する方法

分類Dev

ループ内にもあるfirebaseからonSnapshot関数内に配列の値を挿入する方法

分類Dev

PHPを使用してデータベースのjson配列に複数の行を挿入する方法

分類Dev

JavaScriptを使用して配列に一度に2つの値を挿入する方法

分類Dev

mybatisを使用して配列値をpostgreSQLに挿入する方法

分類Dev

PHPを使用してmysqlに配列を挿入する方法

分類Dev

Javascriptを使用してIDで配列にオブジェクトを挿入する方法

分類Dev

Ramda.jsを使用してJavascriptの2D配列に動的に挿入する方法

分類Dev

ajaxでPOSTメソッドを使用して複数の配列を使用してデータベースにデータを挿入する方法:

分類Dev

nodejsを使用してpostgresqlに値の配列を挿入する方法

分類Dev

関数出力を別の関数の配列に挿入する方法

分類Dev

InversifyJS を使用して関数を挿入する最良の方法

分類Dev

PHPを使用して、特定の行内の既存の列にVARCHAR値を挿入する

分類Dev

Javascriptを使用して文字列を複数の方法で配列に分割する

分類Dev

配列のような方法でバニラJavascriptを使用してCSSの複数の行を追加または挿入する

分類Dev

jsonを使用してjsonの配列要素の配列内に値を挿入する方法または以下のjson文字列に値を挿入する方法

分類Dev

javascriptでオブジェクトの配列を結合してからhtml要素に挿入する方法

分類Dev

jQueryを使用して特定のインデックスで2D配列に値を挿入する方法

分類Dev

配列の入出力を使用してC関数を作成する方法

分類Dev

node.jsとcloudflareワーカーを使用して既存のHTML応答にJavaScriptを挿入する方法

分類Dev

配列を既存の配列Mongodbに挿入します

分類Dev

Javaの条件を使用して配列のインデックスを別の配列に挿入する方法

Related 関連記事

  1. 1

    Firebaseでforeachを使用せずに複数の配列を挿入する方法

  2. 2

    laravelを使用して複数の配列をmysqlに挿入する方法

  3. 3

    SQLServerを使用して既存の列にレコードを挿入する方法

  4. 4

    Joltを使用して特定の配列要素に配列を挿入する方法

  5. 5

    phpを使用してphpmyadminに配列の配列を挿入する方法

  6. 6

    PHPPDOを使用してMySQLに複数の行を持つ複数の配列を挿入する方法

  7. 7

    NpgSqlを使用して文字列の配列をPostgresql列に挿入する方法

  8. 8

    javascriptで関数を使用して配列に要素を追加する方法

  9. 9

    ループ内にもあるfirebaseからonSnapshot関数内に配列の値を挿入する方法

  10. 10

    PHPを使用してデータベースのjson配列に複数の行を挿入する方法

  11. 11

    JavaScriptを使用して配列に一度に2つの値を挿入する方法

  12. 12

    mybatisを使用して配列値をpostgreSQLに挿入する方法

  13. 13

    PHPを使用してmysqlに配列を挿入する方法

  14. 14

    Javascriptを使用してIDで配列にオブジェクトを挿入する方法

  15. 15

    Ramda.jsを使用してJavascriptの2D配列に動的に挿入する方法

  16. 16

    ajaxでPOSTメソッドを使用して複数の配列を使用してデータベースにデータを挿入する方法:

  17. 17

    nodejsを使用してpostgresqlに値の配列を挿入する方法

  18. 18

    関数出力を別の関数の配列に挿入する方法

  19. 19

    InversifyJS を使用して関数を挿入する最良の方法

  20. 20

    PHPを使用して、特定の行内の既存の列にVARCHAR値を挿入する

  21. 21

    Javascriptを使用して文字列を複数の方法で配列に分割する

  22. 22

    配列のような方法でバニラJavascriptを使用してCSSの複数の行を追加または挿入する

  23. 23

    jsonを使用してjsonの配列要素の配列内に値を挿入する方法または以下のjson文字列に値を挿入する方法

  24. 24

    javascriptでオブジェクトの配列を結合してからhtml要素に挿入する方法

  25. 25

    jQueryを使用して特定のインデックスで2D配列に値を挿入する方法

  26. 26

    配列の入出力を使用してC関数を作成する方法

  27. 27

    node.jsとcloudflareワーカーを使用して既存のHTML応答にJavaScriptを挿入する方法

  28. 28

    配列を既存の配列Mongodbに挿入します

  29. 29

    Javaの条件を使用して配列のインデックスを別の配列に挿入する方法

ホットタグ

アーカイブ