Firestore.settings() 要求它的第一个参数是对象类型,但它是一个自定义对象

Posted

技术标签:

【中文标题】Firestore.settings() 要求它的第一个参数是对象类型,但它是一个自定义对象【英文标题】:Firestore.settings() requires its first argument to be of type object but it was a custom object 【发布时间】:2019-10-27 08:32:51 【问题描述】:

我无法调用 firebase.firestore().settings() 函数,因为我收到一些“要求其第一个参数为对象类型”的错误:

firebase.firestore().settings( timestampsInSnapshots: true )

我不明白这个错误,但作为一种解决方法,我尝试创建一个对象:

const firestoreSettings = Object.create( timestampsInSnapshots: true )
firebase.firestore().settings(firestoreSettings)

这也没用。

这个错误从何而来,如何解决?

【问题讨论】:

【参考方案1】:

你混淆了命名空间;这应该可以解决问题

import firebase from 'firebase/app'
if (!firebase.apps.length) 
   firebase.initializeApp(YOUR_CONFIG_OBJECT_GOES_HERE)

const firestore = firebase.firestore()
const settings =  timestampsInSnapshots: true 
firestore.settings(settings) // notice it is firestore instead of firestore()

PD:这不再是必需的...尝试将您的 sdk 版本更新到最后一个 :)

【讨论】:

您的意思是更新到 Firebase 6.1.1?如果是这样,我试过了,但效果并不好。我也不明白“admin”是什么(得到“admin is not defined”错误) 我的错我只是更新了答案,admin 是一个约定...我不记得在哪个版本之后它被删除了,但现在它不再是问题了...无论如何,检查更新后的示例,它应该可以工作 谢谢,但我仍然收到“未定义管理员”,还收到“名为“[DEFAULT]”的 Firebase 应用程序已经存在(应用程序/重复应用程序)”。我已经被这个 firebase 卡住了 5 天了,这真是太痛苦了 *** 我刚刚进行了最后一次更新,因为您在多个帖子中都提出了这个问题,所以您应该只将其保留在一个地方,还要考虑到错误可能不在 firebase 方面,而是在您的设置中,检查你的版本,确保你使用的是最后一个 现在返回...requires its first argument to be of type object 错误。正如我所说,我正在使用最新版本的 Firebase。关于多个线程,这是一件棘手的事情,因为我正在处理 2 个完全不同的错误,到目前为止,我得到了一个或另一个......【参考方案2】:

以下应该可以解决问题:

import firebase from 'firebase/app';
import 'firebase/firestore';

const config = 
    apiKey: 'xxxxxxxxx',
    authDomain: 'xxxxxxxxx',
    ......
;

firebase.initializeApp(config);

const db = firebase.firestore();

const settings = 
    timestampsInSnapshots: true
;
db.settings(settings);

//....

如另一个答案所示,请注意您不再需要使用timestampsInSnapshots 设置,请参阅https://firebase.google.com/docs/reference/js/firebase.firestore.Settings#optional-timestamps-insnapshots

【讨论】:

【参考方案3】:

我注意到这个问题被标记为nuxt.js。我最近在使用 Nuxt 应用程序中的设置初始化 firestore 时遇到了这个问题。我通过确保 firestore().settings() 只被称为客户端而不是服务器端来解决了这个问题。

【讨论】:

以上是关于Firestore.settings() 要求它的第一个参数是对象类型,但它是一个自定义对象的主要内容,如果未能解决你的问题,请参考以下文章

一篇文章教会你什么是 MySQL,它的特点和学习要求

Java求助下面题目:4、设计一个客户类Customer和它的一个子类Vip,要求如下图

实现一个名为Person的类和它的子类Employee,Employee有两个子类Faculty 和Staff。 具体要求如下: Person类:姓名,地址,电话号码和电子邮件地址; Em

第七章学习小结

23.实现一个名为Person的类和它的子类Employee,Employee有两个子类Faculty 和Staff。 具体要求如下: Person类中的属性有:姓名name(String类型)

23.实现一个名为Person的类和它的子类Employee,Employee有两个子类Faculty 和Staff。 具体要求如下: Person类中的属性有:姓名name(String类型)(代码