Javascript Firebase云Firestore noSQL
数据库包含用户、问题和答案的集合。见下文Javascript Firebase云Firestore noSQL,javascript,angular,firebase,google-cloud-firestore,Javascript,Angular,Firebase,Google Cloud Firestore,数据库包含用户、问题和答案的集合。见下文 Users ------ firstName lastName Questions ------- date question Answers ------- date answer questionId userId 用例:获取用户的答案和这些答案的问题。显示问题和答案 我的代码: //User Questions with Answers this.db.collection('Answers', ref => ref.where
Users
------
firstName
lastName
Questions
-------
date
question
Answers
-------
date
answer
questionId
userId
用例:获取用户的答案和这些答案的问题。显示问题和答案
我的代码:
//User Questions with Answers
this.db.collection('Answers', ref => ref.where('userId', '==', userId) ).snapshotChanges()
.subscribe(data => {
return data.map(a => {
const data = a.payload.doc.data();
console.log(data);
console.log(data.questionId);
//qa.answers.push(data);
//Get each question from the answer now
// bummer that this is a seperate request, very chatty
var question = this.db.collection('Questions')
.doc(data.questionId).valueChanges()
.subscribe(ref => {
console.log(ref);
return ref;
});
return {data, question};
});
});
2个问题:
answersCol : AngularFirestoreCollection<Answers>;
answersObersArray: Observable<Answers[]>;
answersArray: Array<Answers>;
this.answersCol = this.db.collection('survey/' + userId);
this.answersObersArray = this.answersCol .valueChanges();
this.answersObersArray .subscribe(answers => {
this.answersArray = answers ;//--Working with arrays
});
answersCol:AngularFirestoreCollection;
回答:可以观察到;
答:数组;
this.answersCol=this.db.collection('survey/'+userId);
this.answersobsarray=this.answersCol.valueChanges();
this.answersarray.subscribe(answers=>{
this.answersArray=answers;//--使用数组
});
in.html
<table class="table table-bordered">
<tbody *ngFor="let answer of answersArray ">
<tr style="font-weight:bold">
<td>{{ answer }}</td>
</tr>
</tbody>
</table>
{{答案}
(测试)
如果使用Observable,您可以尝试:
in.ts
answersCol : AngularFirestoreCollection<Answers>;
answersObersArray: Observable<Answers[]>;
answersArray: Array<Answers>;
this.answersCol = this.db.collection('survey/' + userId);
this.answersObersArray = this.answersCol .valueChanges();
this.answersObersArray .subscribe(answers => {
this.answersArray = answers ;//--Working with arrays
});
var answersCol=this.db.collection('answers/'+userId')//检查您的结构
应答器阵列:可观测//如果你有答案课
this.answersObservArray=this.answersCol.valueChanges();
in.html
<table class="table table-bordered">
<tbody *ngFor="let answer of answersArray ">
<tr style="font-weight:bold">
<td>{{ answer }}</td>
</tr>
</tbody>
</table>
{(answersObservArray | async)}
(没有经过全面测试)“似乎很健谈。”有点含糊不清。如果您关心性能,我建议您对其进行测量。总的来说,我发现这些类型的查询比开发人员预期的性能要好得多。