如何为静态托管网站设置 Cloud Firestore
How to set up Cloud Firestore for static hosted website
Firestore docs 仅展示了如何使用 firebase-admin
设置 Firestore,在我看来这基本上是一个服务器端解决方案。即使我们谈论的是使用 Cloud Functions,它仍然是一个微型服务器,在浏览器和数据库之间有一个额外的抽象层。我正在尝试弄清楚如何进行与直接从浏览器代码访问实时数据库类似的设置。
在 Google 提供的 YouTube: Getting Started With Cloud Firestore on the Web | Complete Tutorial 的第 5 分钟,我看到正在使用这种类型的配置,除了现在在初始化应用程序之后,我们调用 firestore()
方法而不是database()
获取根引用的方法。
我已在打开 firestore 的情况下重新初始化项目,并将项目规则当前设置为允许任何人访问它。但对我来说,firebase()
方法不包含在我的 firebase 实例中。
const firebase = require('firebase')
const config = {
apiKey: 'long_ugly_string',
authDomain: 'my_app_id.firebaseapp.com',
databaseURL: 'https://my_app_id.firebaseio.com',
projectId: 'my_app_id',
}
firebase.initializeApp(config)
console.log(firebase.firebase) // undefined
const firestore = firebase.firestore() // TypeError: firebase.firestore is not a function
我还尝试创建一个 100% 全新的项目,以确保问题不是由实时数据库安装中残留的旧设置引起的。但是我对新项目有同样的问题。我的 firebase 实例以 database()
方法结束,但没有 firestore()
方法。
感谢@Sidney 的评论,我得以解决问题。我实际上是在查看 node.js 选项卡,而不是文档中的 Web 选项卡。缺少的元素是对 require('firebase/firestore')
的调用以使其可用于 firebase
模块。这是更正后的设置代码:
const firebase = require('firebase')
require('firebase/firestore') // *** this line was missing ***
const config = {
apiKey: 'long_ugly_string',
authDomain: 'my_app_id.firebaseapp.com',
databaseURL: 'https://my_app_id.firebaseio.com',
projectId: 'my_app_id',
}
firebase.initializeApp(config)
const firestore = firebase.firestore()
// rest of code ...
Firestore docs 仅展示了如何使用 firebase-admin
设置 Firestore,在我看来这基本上是一个服务器端解决方案。即使我们谈论的是使用 Cloud Functions,它仍然是一个微型服务器,在浏览器和数据库之间有一个额外的抽象层。我正在尝试弄清楚如何进行与直接从浏览器代码访问实时数据库类似的设置。
在 Google 提供的 YouTube: Getting Started With Cloud Firestore on the Web | Complete Tutorial 的第 5 分钟,我看到正在使用这种类型的配置,除了现在在初始化应用程序之后,我们调用 firestore()
方法而不是database()
获取根引用的方法。
我已在打开 firestore 的情况下重新初始化项目,并将项目规则当前设置为允许任何人访问它。但对我来说,firebase()
方法不包含在我的 firebase 实例中。
const firebase = require('firebase')
const config = {
apiKey: 'long_ugly_string',
authDomain: 'my_app_id.firebaseapp.com',
databaseURL: 'https://my_app_id.firebaseio.com',
projectId: 'my_app_id',
}
firebase.initializeApp(config)
console.log(firebase.firebase) // undefined
const firestore = firebase.firestore() // TypeError: firebase.firestore is not a function
我还尝试创建一个 100% 全新的项目,以确保问题不是由实时数据库安装中残留的旧设置引起的。但是我对新项目有同样的问题。我的 firebase 实例以 database()
方法结束,但没有 firestore()
方法。
感谢@Sidney 的评论,我得以解决问题。我实际上是在查看 node.js 选项卡,而不是文档中的 Web 选项卡。缺少的元素是对 require('firebase/firestore')
的调用以使其可用于 firebase
模块。这是更正后的设置代码:
const firebase = require('firebase')
require('firebase/firestore') // *** this line was missing ***
const config = {
apiKey: 'long_ugly_string',
authDomain: 'my_app_id.firebaseapp.com',
databaseURL: 'https://my_app_id.firebaseio.com',
projectId: 'my_app_id',
}
firebase.initializeApp(config)
const firestore = firebase.firestore()
// rest of code ...