[英]Trying to load all firestore documents in Node.js
我可以成功请求集合中的特定文档。 但我需要能够查询所有文档,因为 Firestore(与实时数据库不同)不支持导出。
我知道以下是不可能的,但肯定有某种方法可以导出整个集合吗?
router.get('/firebase', function (req, res) {
var admin = require('firebase-admin');
const firebaseConfig = require('../firebaseConfig.json');
admin.initializeApp({
credential: admin.credential.cert(firebaseConfig),
databaseURL: 'https://***.firebaseio.com'
});
let db = admin.firestore();
let cityRef = db.collection('marketing').doc('*');
let getDoc = cityRef.get()
.then(doc => {
if (!doc.exists) {
console.log('No such document!');
} else {
console.log('Document data:', doc.data());
}
})
.catch(err => {
console.log('Error getting document', err);
});
});
Doug Stevenson对此答案的重构版本
router.get('/firebase', async function (req, res) {
var admin = require('firebase-admin');
const firebaseConfig = require('../firebaseConfig.json');
admin.initializeApp({
credential: admin.credential.cert(firebaseConfig),
databaseURL: 'https://gundies.firebaseio.com'
});
let db = admin.firestore();
const snapshot = await db.collection("marketing").get();
const docs = snapshot.docs.map(doc => doc.data())
变量“文档”将保存您的所有数据!
db.collection('marketing').doc('*')
语法不正确。 Firestore 查询中没有文档通配符。 只需使用db.collection('marketing').get()
即可获取包含集合中所有文档的 QuerySnapshot。
它的工作方式与您在 查询文档中看到的一样,只是您没有指定任何过滤器来限制结果集。
根据 Doug 的回答,不加载.doc()
允许我获取所有记录。 我之前试过这个,但是 console.log 很难阅读。 从这个StackOverflow 答案中添加一个 forEach 很有帮助。
router.get('/firebase', function (req, res) {
var admin = require('firebase-admin');
const firebaseConfig = require('../firebaseConfig.json');
admin.initializeApp({
credential: admin.credential.cert(firebaseConfig),
databaseURL: 'https://***.firebaseio.com'
});
let db = admin.firestore();
db.collection('marketing').get()
.then(snapshot => {
snapshot.forEach(doc => {
console.log(doc.id, '=>', doc.data());
});
})
.catch(err => {
console.log('Error getting document', err);
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.