【问题标题】:Error [FirebaseError]: Invalid document reference. Document references must have an even number of segments,错误 [FirebaseError]:文档引用无效。文档引用必须有偶数个段,
【发布时间】:2021-01-23 13:51:39
【问题描述】:
const firebase = require("firebase");
// Required for side-effects
require("firebase/firestore");

// Initialize Cloud Firestore through Firebase
firebase.initializeApp({
    apiKey: "____",
    authDomain: "____",
    projectId: "____"
  });
  
var db = firebase.firestore();

var datasetSymptom=[{
    "Disease" : [ "edema pulmonary" ],
    "Symptom" : "Heberden's node"
  }, {
    "Disease" : [ "cholecystitis" ],
    "Symptom" : "Murphy's sign"
  }, {
    "Disease" : [ "hemiparesis", "hypertension pulmonary", "transient ischemic attack" ],
    "Symptom" : "Stahli's line"
  }
  ]

datasetSymptom.forEach(function(obj) {
    db.collection("datasetSymptom").doc(obj.Symptom).set({
        Disease: obj.Disease
    })
});

我已经在另一个集合上运行了相同的算法,其名称与文档相同,Disease 名称与字段相同。它工作得很好。 错误:

D:\react tutorial\reactnative\fyp\node_modules\@firebase\firestore\dist\node-cjs\database-21da52c3-e2da0fdd.js:25868
            throw replaceFunctionName(e, 'doc()', 'CollectionReference.doc()');
            ^

Error [FirebaseError]: Invalid document reference. Document references must have an even number of segments, but datasetSymptom/feels hot/feverish has 3.
    at new FirestoreError (D:\react tutorial\reactnative\fyp\node_modules\←[4m@firebase←[24m\firestore\dist\node-cjs\database-21da52c3-e2da0fdd.js:209:28)
    at validateDocumentPath (D:\react tutorial\reactnative\fyp\node_modules\←[4m@firebase←[24m\firestore\dist\node-cjs\database-21da52c3-e2da0fdd.js:19706:15)
    at doc (D:\react tutorial\reactnative\fyp\node_modules\←[4m@firebase←[24m\firestore\dist\node-cjs\database-21da52c3-e2da0fdd.js:22462:9)
    at CollectionReference$1.doc (D:\react tutorial\reactnative\fyp\node_modules\←[4m@firebase←[24m\firestore\dist\node-cjs\database-21da52c3-e2da0fdd.js:25864:64)
    at D:\react tutorial\reactnative\fyp\index2x2.js:1233:37
    at Array.forEach (<anonymous>)
    at Object.<anonymous> (D:\react tutorial\reactnative\fyp\index2x2.js:1231:16)
←[90m    at Module._compile (internal/modules/cjs/loader.js:1063:30)←[39m
←[90m    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)←[39m
←[90m    at Module.load (internal/modules/cjs/loader.js:928:32)←[39m {
  code: ←[32m'invalid-argument'←[39m,
  toString: ←[36m[Function (anonymous)]←[39m
}

/////////////////////////////////////// ///////////////////////////////////////// ////////////////////////////////////////p >

【问题讨论】:

  • 我的数据比代码中显示的要大很多

标签: node.js google-cloud-firestore


【解决方案1】:

您的数组中的一个或多个对象似乎没有Symptom 属性。当这种情况发生时,doc(obj.Symptom) 会导致对空文档的引用,这就是导致错误的原因。

要查找有问题的数组项,请手动检查您的 JSON,或在您的代码中执行以下操作:

datasetSymptom.forEach(function(obj, index) {
  if (obj.Symptom && object.Symptom.length) {
    db.collection("datasetSymptom").doc(obj.Symptom).set({
      Disease: obj.Disease
    })
  }
  else {
    console.error(`Found an object without a Symptom at index ${index} in the array`);
  }
});

【讨论】:

  • 1) 请限制您发布的 cmets 数量,因为此信息可能是一条评论。 2)您共享的日志行并没有说明代码有什么问题,而且很难仅解决“它不起作用”的问题。请提供有关您在我的答案中使用代码时遇到的确切问题的具体信息。您是否已经自己调试过问题,例如在调试器中逐行调试代码?
  • 问题是一个症状在其字符串中包含一个“/”,因为它在 Firestore 中是无效的,所以我用“-”替换它,从而解决了问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-17
  • 1970-01-01
  • 2018-11-12
  • 1970-01-01
  • 1970-01-01
  • 2020-09-30
  • 1970-01-01
相关资源
最近更新 更多