部署后如何播种 firestore 数据库?
How to seed the firestore database after deployment?
我将 firebase 用于一个 API 项目,对于初始设置,我需要使用一些用户和基本数据来为 firestore 数据库播种。
我们如何运行这个?
一个想法是创建一个端点 /setup?someKey=someValue 并传入数据。有没有更好更合适的方法用初始值播种数据库?
此外,我还需要在 Firebase Auth 中创建一个超级用户吗?
一种简单的方法是在您自己的计算机上使用 Admin SDK。
您创建了一个以
开头的 JS 文件
#!/usr/bin/node
const admin = require('firebase-admin');
admin.initializeApp({
credential: admin.credential.cert("xxxx.json")
});
其中 xxxx.json
是您的 Firebase 服务帐户的私钥文件。您可以按照文档中 here 的描述从 Firebase 控制台获取此文件。通常将其存储在与 index.js
文件同一级别的 functions
文件夹中。如果您想将其存储在 functions
文件夹中的其他位置(例如 sub-folder),您需要调整上述代码中的路径。
然后,在文件的其余部分,您可以与您的 Firestore 实例进行交互,就像您在 Cloud Functions 中所做的那样,例如:
admin.firestore().collection('...').add({...});
根据您的数据格式,您必须编写代码以在 Firestore 中创建文档。
例如,让我们假设您的数据是一个 JS 对象数组。你可以这样做:
const myArrayOfObjects = [{color: 'blue', quantity: 34}, {color: 'green', quantity: 98}];
const p = [];
myArrayOfObjects.forEach(obj => {
p.push(admin.firestore().collection('...').add(obj)
})
Promise.all(p);
然后你只需在终端window
中执行node thefilename.js
来执行这个js文件
我将 firebase 用于一个 API 项目,对于初始设置,我需要使用一些用户和基本数据来为 firestore 数据库播种。
我们如何运行这个?
一个想法是创建一个端点 /setup?someKey=someValue 并传入数据。有没有更好更合适的方法用初始值播种数据库?
此外,我还需要在 Firebase Auth 中创建一个超级用户吗?
一种简单的方法是在您自己的计算机上使用 Admin SDK。
您创建了一个以
开头的 JS 文件#!/usr/bin/node
const admin = require('firebase-admin');
admin.initializeApp({
credential: admin.credential.cert("xxxx.json")
});
其中 xxxx.json
是您的 Firebase 服务帐户的私钥文件。您可以按照文档中 here 的描述从 Firebase 控制台获取此文件。通常将其存储在与 index.js
文件同一级别的 functions
文件夹中。如果您想将其存储在 functions
文件夹中的其他位置(例如 sub-folder),您需要调整上述代码中的路径。
然后,在文件的其余部分,您可以与您的 Firestore 实例进行交互,就像您在 Cloud Functions 中所做的那样,例如:
admin.firestore().collection('...').add({...});
根据您的数据格式,您必须编写代码以在 Firestore 中创建文档。
例如,让我们假设您的数据是一个 JS 对象数组。你可以这样做:
const myArrayOfObjects = [{color: 'blue', quantity: 34}, {color: 'green', quantity: 98}];
const p = [];
myArrayOfObjects.forEach(obj => {
p.push(admin.firestore().collection('...').add(obj)
})
Promise.all(p);
然后你只需在终端window
中执行node thefilename.js
来执行这个js文件