我在节点中进行了一个查询以存储到Firestore以获取文档集合。我想将集合写为要由应用程序解析的json字符串。我的代码如下:
serverRef = db.collection('servers');
getDocs = serverRef.where('online', '==', true).get()
.then(querySnapshot => {
if (querySnapshot.empty) {
res.send("NO SERVERS AVAILABLE");
} else {
var docs = querySnapshot.docs;
console.log('Document data:', docs);
res.end(JSON.stringify({kind: 'freeforge#PublicServerSearchResponse',servers: docs}));
}
我以这种方式获取不必要的数据,因为我得到的只是文档快照。如何遍历文档快照并将其发送到一个json字符串中?
答案 0 :(得分:1)
QuerySnapshot
和Document
类不是简单的JSON类型。如果您想控制所写内容,则需要遍历querySnapshot
(使用map
或forEach
)并自己提取JSON数据。
一个可能的例子:
serverRef = db.collection('servers');
getDocs = serverRef.where('online', '==', true).get()
.then(querySnapshot => {
if (querySnapshot.empty) {
res.send("NO SERVERS AVAILABLE");
} else {
var docs = querySnapshot.docs.map(doc => doc.data());
console.log('Document data:', docs);
res.end(JSON.stringify({kind: 'freeforge#PublicServerSearchResponse', servers: docs}));
}
});
答案 1 :(得分:0)
任何寻找颤振答案的人都是这个,
serverRef = db.collection('servers');
getDocs = serverRef.where('online', '==', true).get()
.then(querySnapshot => {
if (querySnapshot.empty) {
res.send("NO SERVERS AVAILABLE");
} else {
var docs =
querySnapshot.docs.map(json.decode(json.encode(doc.data())));
}
});