我有两个集合。(ApplyJobs
andJobs
anduser
)。当用户申请工作时,我将该记录存储在ApplyJobs
集合中。像这样:
applyId:****,
jobId:*****,
userId:*****
现在,我想按用户显示所有申请工作。首先:获取日志用户ID,我存储本地日志用户ID。所以,我可以获取日志用户ID。
第二:我根据该id筛选应用作业。如下所示,var ref=\u db。集合(“applyJobs”)。其中('userId',isEqualTo:uid)
。我在这里没有调用用户集合来获取uid。因为我已经在本地存储uid。这是最佳实践吗?
第三:我在这里存储结果
列表
这是我尝试的方式。但这不是ID列表。只有一个id。
streamApplyJob(List<String> jobId) {
Collection('jobs').document(jobId);
}
我也试过这种方法。
Stream<List<JobModel>> streamApplyJob(List<String> jobId) {
var ref = _db.collection('jobs').where('jobId',isEqualTo: jobId);
return ref.snapshots().map((list) =>
list.documents.map((doc) => JobModel.fromFirestore(doc)).toList());
}
尝试获取长度,但结果是
0
db.streamApplyJob(jobIds).listen((v)=>{
print(v.length)
});
完整代码
数据库端
///Get a stream of apply jobs
Stream<List<ApplyJobModel>> streamApplyJobs(String uid) {
var ref = _db.collection('applyJobs').where('userId',isEqualTo: uid);
return ref.snapshots().map((list) =>
list.documents.map((doc) => ApplyJobModel.fromFirestore(doc)).toList());
}
///Get a stream of a single document
Stream<List<JobModel>> streamApplyJob(List<String> jobId) {
var ref = _db.collection('jobs').where('jobId',isEqualTo: jobId);
return ref.snapshots().map((list) =>
list.documents.map((doc) => JobModel.fromFirestore(doc)).toList());
}
使命感
List<String> jobIds = [];
void getData() {
db.streamApplyJobs(widget.uid).listen((listApplies) => {
for (int i = 0; i < listApplies.length; i++)
{jobIds.add(listApplies[i].jobId)},
});
db.streamApplyJob(jobIds).listen((v)=>{
print(v.length)
});
}
解决方案(目前正在运行)-这是最佳做法还是有其他最佳方法?
Future<List<JobModel>> getJobs() async {
await db.streamJobs(true).listen((jobs) {
setState(() {
jobModel = jobs;
});
});
return jobModel;
}
Future getData() async {
await getJobs();
db.streamApplyJobs(widget.uid).listen((apply) => {
for (int j = 0; j < jobModel.length; j++)
{
for (int i = 0; i < apply.length; i++)
{
if (apply[i].jobId == jobModel[j].jobId)
{
jobModelNew.add(jobModel[j]),
}
}
}
});
}
请看一下这个例子。它将集合引用绑定到列表。
如果这有帮助,请告诉我。
不确定是否有正式文件记录,但现在这是可能的!
.where(admin.firestore.FieldPath.documentId(), "in", [array, of, ids])
在此处找到:https://stackoverflow.com/a/52252264/10562805
我想通过id列表获取所有作业。如何筛选它?
目前没有办法将ID列表传递给FiRecovery查询并获取与所有这些ID匹配的文档。请参阅Google FiRecovery-如何在一次往返中通过多个ID获取文档?(讨论如何使用文档ID执行此操作)和Firebase FiRecovery-OR查询(讨论过滤单个字段上的多个值)。
除非您的用例恰好与第二个答案中提到的解决方法相匹配,否则您必须为每个值执行单独的查询,并将结果合并到您的应用程序代码中。
正如我从“云火数据模型”指南中得到的,“每个文档都由一个名称标识。”是否可以通过该文档标识符(即名称或ID)查询集合? 例如,集合“Things”中的文档具有IDs、1、2等。: 是否可以查询 ID 小于 100 的文档?
一旦我将类别从数组更改为映射,我想我可以使用多个where条件来过滤文档 现在问题2,firebase要求为复合查询添加索引。我在每个文档中保存的类别是动态的,我无法提前添加这些索引。在这种情况下,理想的解决方案是什么?如有任何帮助,不胜感激。
问题内容: 在执行groupby(’name’)并在其他列上使用过mean()函数后,我得到了这样的系列 谁能告诉我如何过滤出平均值为1.000000的行?谢谢,我非常感谢您的帮助。 问题答案: In [5]:
问题内容: 这是我的表(简体,仅重要的列): 以及一些样本数据: 我想选择键下任意位置的行。像这样的东西: 数据完全像样本中一样嵌套(仅一层)。 当前,我们正在使用PostgreSQL 9.3.5。 在PostgreSQL 9.3中可以吗?也许是9.4? 问题答案: 您的查询已关闭。 是关键功能。还是为了。进行了一些改进: 旧的sqlfiddle db <> fiddle在这里 已经返回该值作为数
问题内容: 基本上,我有一个名为的结构,主题包含,以及一个标志(有关说明,请参见下面的屏幕截图)。 在应用程序中,我想过滤数据,仅显示具有的主题。 这就是我想要做的: 但这是行不通的。我应该如何处理?在此先感谢您的帮助。 问题答案: 您那里有一些小错误。总体来说还算不错,但是结合起来它们将永远无法正常工作: 调用任何方法都将返回一个新对象 您需要先过滤其价值 您需要遍历结果 结合这些: 我们会定期