gpt4 book ai didi

javascript - 如何将子集合添加到 firebase 中新创建的文档中?

转载 作者:太空宇宙 更新时间:2023-11-04 01:17:10 25 4
gpt4 key购买 nike

我正在为 firebase 中的某些文档创建导入器。

我需要为我添加的每个文档的特定属性创建一个子集合(而不仅仅是一个数组)。

目前我有以下代码,但似乎不起作用:

let rawdata = fs.readFileSync("files/" + file);
let spot = JSON.parse(rawdata);
var spotFirebase = {
id: spot.Id,
sourceId: spot.SourceId,
type: spot.Type,
location: new firebase.firestore.GeoPoint(spot.Latitude, spot.Longitude),
description: spot.Description,
address: spot.Address,
city: spot.City,
country: spot.Country,
price: spot.Price,
parkingCost: spot.ParkingCost,
opening: spot.Opening,
name: spot.Name,
features: spot.Features,
activities: spot.Activities,
rating: {
ratingCount: spot.Rating.RatingCount,
ratingAverage: spot.Rating.RatingAverage
}
}

db.collection("spots").add(spotFirebase).then(function (docRef) {
console.log("Document ", file, " written with ID: ", docRef.id, ", index: ", index, ". ", spot.Rating.UserRatings.length);

spot.Rating.UserRatings.forEach(ur =>
docRef.collection("userRatings").add(
{
date: ur.Date,
username: ur.UserName,
review: ur.Review,
note: ur.Note,
reviewSource: ur.ReviewSource
}).then(function (subDocRef) {
console.log("Review ID ", subDocRef.id, " written");
}).catch(function (errorReview) {
console.error("Error adding document: ", errorReview);
}));
})
.catch(function (error) {
console.error("Error adding document: ", error);
});
  1. 我没有显示错误
  2. 我从未收到过“评论 ID ...已写入”消息
  3. 显然,我以书面的现场文档结束,但没有任何用户评分。

我想我没有正确添加子集合。

我做错了什么?

最佳答案

代码没有等待子集合的添加完成就终止。

此编辑将子集合中的添加分解为可测试函数,收集在 promises 数组中创建每个新文档的 promise ,然后等待所有这些 (Promise.all( )) 在终止之前完成...

function addUserRating(parentRef, ur) {
const newDoc = {
date: ur.Date,
username: ur.UserName,
review: ur.Review,
note: ur.Note,
reviewSource: ur.ReviewSource
}
return parentRef.collection("userRatings").add(newDoc).then(result => {
console.log("Review ID ", result.path, " written");
return result
})
}

db.collection("spots").add(spotFirebase).then(function (docRef) {
console.log("Document ", file, " written with ID: ", docRef.id, ", index: ", index, ". ", spot.Rating.UserRatings.length);
let promises = spot.Rating.UserRatings.map(ur => addUserRating(docRef, ur))
return Promise.all(promises)
}).catch(function (error) {
console.error("Error adding document(s): ", error)
})

关于javascript - 如何将子集合添加到 firebase 中新创建的文档中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60514208/

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