gpt4 book ai didi

javascript - 如何使用云函数在 Firestore 中添加虚拟数据

转载 作者:行者123 更新时间:2023-11-28 16:58:12 25 4
gpt4 key购买 nike

我想使用云函数在 firestore 中添加虚拟值,并且我使用 http 触发器来传递我想要创建的虚拟值的数量,这不起作用

exports.addDummyUsers = functions.https
.onRequest((request,response)=>{

let dbb=admin.firestore();
let counter = request.query.counter;

for(let i=0;i<counter;i++){
dbb.collection('Users').doc('Lone').set({
email: 'Dummy',
name: 'Dummy',
phoneNumber: 'Dummy'
});
console.log("Dummy " + counter + ' added');
}

response.send(counter + ' Dummy Values Created!');
});

最佳答案

根据下面弗兰克的评论更新了答案:

您想要并行创建多个 Firestore 文档。在您的情况下(不需要原子写入)最好是使用 Promise.all() .

您应该等待异步操作集完成后再发送回响应,即等待 Promise.all() 返回的单个 Promise 解析。

所以,以下应该有效:

exports.addDummyUsers = functions.https.onRequest((request, response) => {

let dbb = admin.firestore();
let counter = request.query.counter;

const promises = []

for (let i = 0; i < counter; i++) {
promises.push(
dbb.collection('Users').doc('Lone' + i).set({
email: 'Dummy',
name: 'Dummy',
phoneNumber: 'Dummy'
})
)
}

return Promise.all(promises)
.then(resultsArray => {
response.send(counter + ' Dummy Values Created!');
})
.catch(error => {

//Watch the official video: https://www.youtube.com/watch?v=7IkUgCLr5oA&t=1s&list=PLl-K7zZEsYLkPZHe41m4jfAxUi0JjLgSM&index=3

});

});
<小时/>

原始答案:

请参阅下面 Frank 的评论,了解为什么在任何情况下都最好使用 Promise.all()

另请参阅 doc 中的以下评论:“...批量写入的性能优于序列化写入,但不优于并行写入

您应该使用 batched write (如果您要编写的文档少于 500 个)或使用 Promise.all()

您还应该等待异步操作集完成后再发送回响应。

所以以下应该有效:

exports.addDummyUsers = functions.https.onRequest((request, response) => {

let dbb = admin.firestore();
let counter = request.query.counter;

if (counter < 500) {
//Use batched write
let batch = dbb.batch();

for (let i = 0; i < counter; i++) {

const docRef = dbb.collection('Users').doc('Lone' + i); //Here you need to create different doc reference. E.g. use the value of i
batch.set(docRef, {
email: 'Dummy',
name: 'Dummy',
phoneNumber: 'Dummy'
});
}

return batch.commit()
.then(() => {
response.send(counter + ' Dummy Values Created!');
})
.catch(error => {
//Watch the official video: https://www.youtube.com/watch?v=7IkUgCLr5oA&t=1s&list=PLl-K7zZEsYLkPZHe41m4jfAxUi0JjLgSM&index=3
});


} else {
//Use Promise.all
const promises = []

for (let i = 0; i < counter; i++) {
promises.push(
dbb.collection('Users').doc('Lone' + i).set({
email: 'Dummy',
name: 'Dummy',
phoneNumber: 'Dummy'
})
)
}

return Promise.all(promises)
.then(resultsArray => {
response.send(counter + ' Dummy Values Created!');
})
.catch(error => {

//Watch the official video

});

}

});

关于javascript - 如何使用云函数在 Firestore 中添加虚拟数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58471132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com