簡體   English   中英

如何將數據推送到Firebase Angular中的實時數據庫

[英]How to Push data into Firebase Realtime database in Angular

我剛開始使用 angualar,想將數據推送到 angular 中的 Firebase 數據庫,目前為此使用 post,但一些隨機數據正在附加到數據庫中。

代碼如下:

Angular 未指定密鑰時出錯,因此給出“值”

this.http.post('https://farmio-3lbue-default-random-rtdb.firebaseio.com/products.json' , { 'value' : 'Carrot'}).subscribe(res=>{
  console.log(res , 'post')
}, error=> console.log(error))

Firebase 數據庫片段: 在此處輸入圖像描述 在此處輸入圖像描述

想添加為前三項。

PS:正在添加數據並獲得成功響應,但未按預期工作

我建議先閱讀本文以了解 Firebase 如何處理 arrays: 最佳實踐:Firebase 中的 Arrays

當您將數據發布到POST實時數據庫的 REST API 時,它會自動為您看到的-N....格式的數據生成所謂的密鑰。 由於我鏈接的文章中解釋的原因,這是它用於將數據添加到列表的唯一格式。

如果你想向數組中添加一個項目,你必須自己指定該項目的索引/鍵使用PUT命令:

        // 👇
this.http.put(
  'https://farmio-3lbue-default-random-rtdb.firebaseio.com/products/4.json',
                                                                 // 👆
   { 'value' : 'Carrot'}
)

這意味着您必須以某種方式已經知道數據庫中已經有多少項目,這可能需要您在添加項目之前讀取數據——這反過來意味着您應該使用事務來進行操作。

不在數據庫中使用順序數字鍵的所有充分理由,而是依賴於它作為內置原語提供的按鍵。

您的“產品”實體是一個 JS Array 這意味着您不能將其作為鍵值 object 引用,而是作為帶有索引的數組引用。

將新的 object { 'value': 'Carrot'}推入數組后,整個 object 將保存到數組中。 相反,您似乎只想要保存'Carrot'字符串。

您需要做的是在正文中發送文字字符串本身:

this.http.post('https://farmio-3lbue-default-random-rtdb.firebaseio.com/products.json' , 'Carrot')

根據Angular 文檔。 , HttpClient post方法接受any作為 body 參數的類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM