【问题标题】:Firestore web code sample gives invalid argument typeFirestore Web 代码示例提供了无效的参数类型
【发布时间】:2018-03-19 02:40:34
【问题描述】:

我正在试用 Firebase 的新 Firestore。当我从https://firebase.google.com/docs/firestore/manage-data/add-data?authuser=0 运行代码示例时,出现错误。

// Add a new document with a generated id.
db.collection("cities").add({
    name: "Tokyo",
    country: "Japan"
})
.then(function(docRef) {
    console.log("Document written with ID: ", docRef.id);
})
.catch(function(error) {
    console.error("Error adding document: ", error);
});

异常捕获:(FirebaseError) : Function CollectionReference.add() 要求其第一个参数为 object 类型,但它是:自定义 Object 对象

编辑: 抱歉,我没有提到我正在使用 GWT 和 JSNI,没有 gwt 也可以正常工作

【问题讨论】:

  • 通过快速扫描,您的代码看起来是正确的,这让我想知道是否从示例中复制了一些不可打印的字符。您可以尝试输入您传入的 JSON 对象,看看是否有影响?
  • 我又打了一遍,没区别
  • 嗯....在那种情况下我不知道。让我们希望其他人有更好的主意。
  • 您找到解决此问题的方法了吗?我也遇到了同样的问题。

标签: javascript firebase gwt jsni google-cloud-firestore


【解决方案1】:

这可能是跨窗口问题:GWT 代码在 iframe 中运行;如果 Firebase 正在寻找“裸对象”,它可能会比较对象的构造函数,如果对象越过 iframe 边界,这将不是预期的构造函数。

也许尝试使用new $wnd.Object() 而不是{}new Object()

【讨论】:

    【解决方案2】:

    快速解决方法

    var city: any;
    city = Object.assign({}, {
        name: "Tokyo",
        country: "Japan"
    });
    db.collection("cities").add(city)
    

    【讨论】:

    • 但是为什么呢?为什么我们必须创建一个新对象
    • 谢谢,@thomas-broyer,这是因为环境不同
    【解决方案3】:

    我试过这段代码,如果你有数据来自 angular FormObject

    this.afs.collection("/products").add(Object.assign(product));
    

    【讨论】:

      【解决方案4】:

      Add a document

      那你可以试试这个:

      db.collection("cities").add({
          'name': "Tokyo",
          'country': "Japan"
      })
      

      【讨论】:

        【解决方案5】:

        似乎 GWT 正在生成一些自定义对象,就像错误所说的那样,所以作为解决方法,我使用非 JSNI 转换方法函数来创建这样的对象

        function convertObject(data) {
            var obj = {}
            Object.keys(data).forEach(function(key,index) {
                console.log(key);
                obj[key] = data[key];
            });
            return obj;
        }
        

        仍然只是一种解决方法,很想知道是否有更好的解决方案..

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-01-24
          • 2017-03-19
          • 1970-01-01
          • 2023-03-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多