什么';将包含对象和其他字段的嵌套数组上载到Firestore是一种优雅的方式吗?(Node.js,Javascript)
我想从Node10上运行的云函数将数据部署到Firestore集合中 集合称为“活动”,应该包含带有对象和附加字段的联合数组 首先,这是最重要的对象数组:什么';将包含对象和其他字段的嵌套数组上载到Firestore是一种优雅的方式吗?(Node.js,Javascript),javascript,node.js,firebase,google-cloud-firestore,google-cloud-functions,Javascript,Node.js,Firebase,Google Cloud Firestore,Google Cloud Functions,我想从Node10上运行的云函数将数据部署到Firestore集合中 集合称为“活动”,应该包含带有对象和附加字段的联合数组 首先,这是最重要的对象数组: listOfNonEmptyObjects = [ { pronounsDefinite: 'I' }, { verbsInfinitiv: 'work' }, { prepositions: 'in' }, { articles: 'the' }, { nouns: 'garden' } ]; 这就是我上传它的方式,而ses
listOfNonEmptyObjects = [
{ pronounsDefinite: 'I' },
{ verbsInfinitiv: 'work' },
{ prepositions: 'in' },
{ articles: 'the' },
{ nouns: 'garden' }
];
这就是我上传它的方式,而sessionID_original基本上是文档名,intentDisplayName只是一个字符串,用于在arrayUnion中创建对象:
return writeToDatabase (
sessionID_original,
{"activities" : admin.firestore.FieldValue.arrayUnion(createObject(intentDisplayName, listOfNonEmptyObjects))}
);
这些是用于此的功能:
function createObject(key, list){
var test = {};
test[key] = list;
return test;
}
function writeToDatabase(sessionID_original, data) {
const docRef = db.collection('users').doc(sessionID_original);
return db.runTransaction(t => {
return t.get(docRef)
.then(doc => {
t.set(docRef, data, {merge: true});
});
}).catch(err => {
console.log(`Error writing to Firestore: ${err}`);
});
}
这就是我在Firestore中看到的情况:
但现在我希望我的函数向数据中添加时间戳或附加信息:
当我尝试此操作时,会出现一个错误,即我无法编写嵌套数组。
但是我怎样才能实现这个数据结构呢。还是我的数据结构不好
另一种尝试可能是在NonPtyObject列表中添加一个时间戳。
但我认为这会使读取时间戳变得更加困难
因此,每当有新活动或其他内容时,我希望函数使用时间戳和布尔值等其他字段将其添加到活动集合中。我不清楚您是否以正确的方式考虑Firestore Firestore是一个文档存储数据库。在大多数情况下,您将同时读取和写入整个文档(JSON对象或密钥/值对集)。虽然您可以在单个文档中创建嵌套的复杂数据结构,但在总体大小和索引功能方面存在一些限制,这些限制最终会限制单个复杂文档的用途(请参阅) 在我看来,您放入数组中的元素可能会从它们自己的文档中获益
在“Firestore阵列与子集合”这一主题上有一些好的线索。很好。谢谢,我想这是我的问题。链接的文章让我明白了。太好了!请您将其中一个答案标记为已接受,以便线程现在被视为已完成?