亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

javascript 映射到 Firestore -> 錯誤:

javascript 映射到 Firestore -> 錯誤:

紅顏莎娜 2022-12-22 08:56:51
嘗試在 javascript 中設置映射變量值以使用云函數將文檔作為映射字段進行火存。它失敗并出現錯誤 - 錯誤:參數“數據”的值不是有效的 Firestore 文檔。輸入不是普通的 JavaScript 對象(在field.map_field: myMap 中找到是導致問題的原因。那么如何在 firestore 文檔中將 javascript map 設置為 map 字段?admin.firestore().collection("users").doc("test").set({                                          name: "Los Angeles",                                          state: "CA",                                          map_field: myMap // map variable                                      })完整代碼在這里:我正在聚合來自多個 firestore 文檔的數據并嘗試插入到一個新文檔中。代碼------------------------>exports.fxname= functions.https.onRequest((request, response) => { collectionRef = admin.firestore().collection('user/doccx/collx');let myMap = new Map();collectionRef.listDocuments().then(documentRefs => {                          console.log('Fetching each document:console log');                          return  admin.firestore().getAll(...documentRefs)                          .then(documentSnapshots => {                                for (let documentSnapshot of documentSnapshots) {                                 let name = documentSnapshot.get('aa');                                 let totalScore= documentSnapshot.get('bb');                                                                 myMap.set(name, totalScore.toString());                                }                                functions.logger.log("calculation done: ");                                console.log(Array.from(myMap) ); //prints values                                var keys = Object.keys(myMap);                                keys.forEach(key=>{                                  console.log(key + '|' + myMap[key]); //this is not printing any value                                });});與問題無關,但也低于警告。它與 .then 的嵌套有關。關于重寫上述代碼的任何建議?108:34 警告避免嵌套 promise promise/no-nesting108:34 警告避免嵌套 promise promise/no-nesting
查看完整描述

2 回答

?
九州編程

TA貢獻1785條經驗 獲得超4個贊

就像錯誤消息指示的那樣,您不能將地圖插入數據庫。解決方法是將其轉換為 JSON 對象,如下所示:

let myMap = {};
myMap[name] = totalScore.toString();

那應該可以解決問題。

108:34 警告避免嵌套 promise promise/no-nesting

這是 ESLINT 被設置為避免 promise 嵌套的結果。我不知道功能結果中的潛在問題,但它確實使理解代碼變得更加困難,并且在深度嵌套時可能會延長代碼的運行時間。您可以使用 javascript async await 函數來消除嵌套所述承諾的需要。


查看完整回答
反對 回復 2022-12-22
?
哆啦的時光機

TA貢獻1779條經驗 獲得超6個贊

firestore 不支持 JS 映射。使用普通的 JS 對象并將它們插入數據庫中,例如:


let contact = {'Jessie':{phone: "213-555-1234", address: "123 N 1st Ave"}}


// example overwrite a doc in firestore

db.collection("contacts").doc('test').set(contact)

在此處查看所有支持的數據類型


查看完整回答
反對 回復 2022-12-22
  • 2 回答
  • 0 關注
  • 96 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號