假设我有一个Firestore云功能,它将在一笔交易中增加一个基地和一个玩家。
下面的代码会总是给我和玩家一样的数量吗?
const db = firebase.firestore();
const basesPromise = db.collection("bases").get();
const playersPromise = db.collection("players").get();
Promise.all([basesPromise, playersPromise])
.then(([bases, players]) => {
console.log("Bases:", bases);
console.log("Players:", players);
});
更笼统地说,我想知道当我同时发出两个请求时,我从他们那里得到的结果是否彼此一致。
这些请求是否同时到达服务器并返回彼此一致的数据?
谢谢你!
答案 0 :(得分:2)
Cloud Firestore不提供保证,因为任何两次读取将始终产生相同的值。它们之间总是有可能通过事务来改变某些事情。在您的代码中,这两个查询实际上不是“同时”发生的。实际上,在最好的情况下,来自客户端的请求实际上是通过单个连接进行的。
您获得的唯一保证是,对单个事务或批处理写入进行的某些文档修改都将自动进行。永远不会有部分完成的交易或批处理。