我有一个名为"医生"使用名称,ID,用户名等字段...
医生内部有一个医疗中心"医疗中心"它引用了名为" medicalcenters"与医疗中心的地址和名称等字段...
我想要的是什么。当我得到一份医生名单时,我也希望获得医疗中心的名称以及我在医生馆内的文件参考。
doc.data()。医疗中心内的医疗中心有参考。
getdoctors () {
firebase.firestore().collection('doctor').orderBy('id').get().then(result => {
result.forEach(doc => {
const data = {
'id': doc.data().id,
'nome': doc.data().nome,
'email': doc.data().email,
'username': doc.data().username
'medicalcenter': HERE I WANT THE MEDICAL CENTER NAME
}
this.items.push(data)
})
})
}
如何才能实现这一目标?
如何使用存储在医生中的集合参考来获取特定的collcetion和字段名称?
我是否必须使用2种方法Async?
答案 0 :(得分:1)
您可能需要考虑对数据进行非规范化。不要只保存医疗中心参考和执行联接,而是考虑保存参考和名称,这样您只需要进行一次查询。如果医疗中心名称发生变化,您可以触发云功能以更改所有医生文档中的名称。
为你做多次的事情创建一个数据模型要容易得多,而不是很少发生的事情。
答案 1 :(得分:0)
是的,您必须对医疗中心中的每个其他文档进行另一次查询,以便将所有这些数据有效地“连接”到一个对象中。您需要正确管理您的承诺,以便在所有医生和医疗中心完成所有查询后才能完成最终结果。
答案 2 :(得分:0)
这就是我设法创建此功能的方法。 getDoctor异步函数将等待等待医疗中心。 通过这种方式,我可以获得每个医生工作的医疗中心。
created () {
this.getdoctors()
},
methods: {
getdoctors: async function () {
try {
let result = await firebase.firestore().collection('doctor').get()
result.forEach(async doc => {
console.log(doc.data())
var medicalcenter = await firebase.firestore().collection('medicalcenter').doc(doc.data().centrosaude.id).get()
const data = {
'id': doc.data().id,
'nome': doc.data().nome,
'email': doc.data().email,
'centrosaude': medicalcenter.data().nome
}
this.items.push(data)
})
} catch (error) {
console.log(error.message)
}
}
}