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

时间:2019-06-12 19:00:05

标签: firebase vue.js google-cloud-firestore nuxt

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

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

我不理解此错误,但是作为一种变通办法,我试图这样创建一个对象:

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

这也不起作用。

此错误来自何处以及如何解决?

3 个答案:

答案 0 :(得分:2)

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

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版本更新为最后一个:)

答案 1 :(得分:0)

以下应该可以解决问题:

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

答案 2 :(得分:0)

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