【发布时间】:2020-10-20 06:35:31
【问题描述】:
我有 'users' 集合,其中包含每个用户 ID 的文档。我还使用经过身份验证的用户 ID(匿名登录)将当前用户 ID 存储在 userID 变量中。
我需要根据最低值的计数器(此集合中的文档数据项)获取一个文档 ID(不是文档数据),并将其存储在名为“receiverID”的变量中,但如果文档 ID 等于当前用户的 ID,然后我想获取下一个可用的 ID。
例如,如果我的平台上有 3 个用户(A、B 和 C)并且存在以下“计数器”值:
- A:1,B:2,C:3
理论上,当 A 查询集合时,他们会得到自己的 doc ID。然后我需要在“用户”集合中获取第二个文档。
我从以下开始,但卡住了:
receiverID = db.collection('users').orderBy('Questions Received','asc').limit(1)
此外,这在事件侦听器上触发(当用户提交问题时),因此必须在函数的下一部分之前解析“receiverID”。这是我的事件监听器的样子:
const sayForm = document.querySelector('#say-form');
sayForm.addEventListener('submit', (e) => {
e.preventDefault();
db.collection('message').add({
message: sayForm.sayInput.value,
time: firebase.firestore.FieldValue.serverTimestamp(),
sender: userID,
currentReceiver: receiverID,
received: 1
})
.catch(function(error) {
console.error("Error adding document: ", error);
});
});
【问题讨论】:
-
您介意使用反引号修复缩进并为单个文档中的属性添加更多格式吗?改进格式也有助于澄清问题
-
@ralemos 能够格式化。我希望现在更清楚了。
标签: javascript firebase asynchronous google-cloud-firestore