批量提交文档到Google Firestore数据库时,使用Node.js和Promises可能会遇到一些问题。以下是一个示例,展示了如何使用Node.js和Firestore的批量写入功能来批量提交文档,并处理可能出现的Promise问题。
首先,确保你已经安装了Firebase Admin SDK:
npm install firebase-admin
然后,你可以使用以下代码来批量提交文档:
const admin = require('firebase-admin');
// 初始化Firebase Admin SDK
admin.initializeApp({
credential: admin.credential.applicationDefault(),
databaseURL: 'https://your-database-url.firebaseio.com'
});
const db = admin.firestore();
// 要批量提交的文档数据
const documents = [
{ id: '1', name: 'Alice', age: 30 },
{ id: '2', name: 'Bob', age: 25 },
{ id: '3', name: 'Charlie', age: 35 }
];
// 创建一个批量写入实例
const batch = db.batch();
documents.forEach(doc => {
const ref = db.collection('users').doc(doc.id);
batch.set(ref, doc);
});
// 提交批量写入
batch.commit()
.then(() => {
console.log('批量提交成功');
})
.catch(err => {
console.error('批量提交失败:', err);
});
.then()
和.catch()
来处理Promise的成功和失败情况。.catch()
中捕获并处理错误,以便了解批量提交过程中可能出现的问题。如果你有大量的文档需要提交,可以将其分成多个批次:
const batchSize = 100; // 每批提交的最大文档数
function batchSubmit(documents) {
const batches = Math.ceil(documents.length / batchSize);
for (let i = 0; i < batches; i++) {
const start = i * batchSize;
const end = start + batchSize;
const batchDocuments = documents.slice(start, end);
const batch = db.batch();
batchDocuments.forEach(doc => {
const ref = db.collection('users').doc(doc.id);
batch.set(ref, doc);
});
batch.commit()
.then(() => {
console.log(`第${i + 1}批提交成功`);
})
.catch(err => {
console.error(`第${i + 1}批提交失败:`, err);
});
}
}
batchSubmit(documents);
通过这种方式,你可以更好地控制批量提交的流程,并处理可能出现的Promise问题。
领取专属 10元无门槛券
手把手带您无忧上云