我很难实现正确的云Firestore文档命名。
我有一个拥有5000多张照片的网络存储服务器。照片命名为1.jpg-
html" target="_blank">示例:该应用程序将显示来自服务器的随机照片(例如123.jpg)。用户将能够对该照片发表评论并回复其他评论。
目前唯一有效的方法是这样命名文档:“photo_1”-
不要使用单调增加的文档ID,例如:•客户1、客户2、客户3、…•产品1、产品2、产品3…这样的顺序ID可能会导致影响延迟的热点。
什么有效:
//Android系统
int currentPhotoNumber = 13;
firebaseFirestore.collection("photos").whereEqualTo("photo_id", currentPhotoNumber).get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
QuerySnapshot snapshot = task.getResult();
if (!snapshot.isEmpty()) {
// Document with the photo_id of "currentPhotoNumber" already exists
} else {
// Document does not exist. We need to create one.
Map<String, Object> data = new HashMap<>();
data.put("photo_id", currentPhotoNumber);
// Create a new document named photo_13
firebaseFirestore.collection("photos").document("photo_" + currentPhotoNumber).set(data);
}
}
// Add a comment to photo_13
for (QueryDocumentSnapshot document : task.getResult()) {
DocumentReference documentReference = document.getReference();
documentReference.collection("photos").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
Map<String, Object> data = new HashMap<>();
data.put("author", "Name");
data.put("author_id", "1234");
data.put("comment", "This is a comment for photo 13");
data.put("time", FieldValue.serverTimestamp());
documentReference.collection("photo_comments").add(data);
}
});
}
}
});
它的工作原理,如果我用UUID创建文档,并设置字段“photo_id”与当前照片号,但它变得混乱,如果很多用户发表评论在同一时间,如果photo_id没有设置为特定的照片,因为它创建多个文档具有相同的字段和值(例如photo_id=13)。我如何防止文档重复具有相同的字段值?
最简单的解决方案是使用收集引用#add()方法,该方法:
将具有指定数据的新文档添加到此集合,并自动为其分配文档ID。
也就是说,要识别照片,只需在文档中添加一个名为imageName
的字段,该字段将保存实际的图像名称»photo_1«-
我有一个firebase云函数(http请求),我想在其中更新firestore数据库中的文档 函数正在部署,正确,但每当我调用它不再打印任何内容。评论该部分打印“promise已解决”,我觉得我无法访问或使用错误的语法访问Firestore db,但我不明白为什么? Firebase日志正在打印: 函数执行开始 tr_。。。。。。。。(id) db调用前测试 函数执行耗时1103毫秒,完成状态代
我有非常大的 cosmos-db 集合,我想重命名这个集合的一些属性,我发现我可以实现 C# 应用程序,它在集合文档上循环,并替换它们每个文档的文档,但是根据集合大小,这个解决方案将花费很长时间。Azure 门户上是否有任何其他解决方案(函数或存储过程)或 SDK,它们将以更少的时间为我们提供相同的功能? 例子: 旧文档{代码,CName,CAddress } 我想将属性重命名为{Customer
云联壹云,新一代产品化融合云,一个平台管理企业本地IDC、私有云、公有云等异构IT资源,整体提高企业IT基础设施的管理效率。
我有以下场景:使用firebase Auth对用户进行匿名身份验证。然后,他用电子邮件和密码登录到一个现有的账户。然后,他再次从账户中注销。现在,我想重新创建他以前使用过的匿名帐户。 是否可以在设备上本地存储匿名凭据,并在以后再次登录匿名帐户时使用它们?我想保存访问/刷新令牌就足够了,但是firebase auth是否为此提供了API?
我在Webphere应用服务器中托管了网络应用程序。它使用log4j版本1.2.15进行日志记录,下面是我的log4j配置。日志文件不会在达到阈值时立即旋转,尽管log4j调试器说重命名为新文件。但是相同的配置在另一个环境中工作正常。请注意,JVM的单个实例只在我的两个服务器环境中运行。所以不可能通过不同的JVM锁定相同的日志文件。 log4j。属性 system.out日志
我使用下面的代码生成一个。apk文件,它工作得很好。但是,为了能够调试,我需要在“applicationvariants.all”周围注释代码,另一个明智的Android Studio说没有找到该文件。 我如何才能使它为generate.apk文件工作,并在Android Studio上调试? 更新 我发现发生了什么,实际上当我在文件名中使用日期和时间时,生成的文件中的时间与Android Stu