javascript - 如何根据 Angular 6 中的 Firebase 实时数据库中的键获取单个记录
问题描述
我正在尝试从 firebase 数据库中获取单条记录数据,但我无法从 firebase 中获取单条记录数据。
我能够将记录添加到 firebase,并且能够获取并显示在列表中的所有记录中。
我正在尝试根据$key
我的依赖
我的详细信息页面组件
import { Component, OnInit } from '@angular/core';
import { Router, ActivatedRoute, Params } from '@angular/router';
import { UserService } from '../user.service';
@Component({
selector: 'app-user-details',
templateUrl: './user-details.component.html',
styleUrls: ['./user-details.component.css']
})
export class UserDetailsComponent implements OnInit {
id: any;
userList: any;
imageUrl: any;
constructor(private _user: UserService, private router: Router, private
arouter: ActivatedRoute) { }
ngOnInit() {
this.id = this.arouter.snapshot.params['id'];
console.log(this.id);
this._user.getUserDetails(this.id)
.subscribe(res => {
this.userList = res;
});
console.log(this.userList);
}
}
我的服务文件:
import { Injectable } from '@angular/core';
import { AngularFireDatabase, AngularFireList, FirebaseObjectObservable }
from 'angularfire2/database';
import { User } from './user';
import * as firebase from 'firebase';
@Injectable({
providedIn: 'root'
})
export class UserService {
userList: AngularFireList<User>;
folder: any;
userDetails: AngularFireList<User>;
constructor(private _fb: AngularFireDatabase) {
this.folder = 'userProfile';
this.userList = _fb.list('/user');
}
getAllUser() {
return this.userList;
}
inserUser(contFrm: User){
this.userList.push(contFrm);
}
getUserDetails(id) {
this.userDetails = this._fb.list('/user'ref => ref.equalTo(id)).valueChanges());
return this.userDetails;
}
它没有抛出任何错误,但我无法获取记录数据。
解决方案
从 AngularFireList 5.0 版开始,您必须在返回 ObservablevalueChanges
之后list
进行链接,而且您没有在getUserDetails
方法中返回值
getUserDetails(id) {
this.userDetails = this._fb.list('/user', {
query: {
orderByChild: 'fname',
equalTo: id
}
}).valueChanges();
return this.userDetails;
}
推荐阅读
- r - 如何使用 R 中的向量选择数据帧的子集
- node.js - 摩卡测试中的上下文未定义
- opengl - 由于 gl_Position,opengl 纹理坐标未正确插值
- javascript - 嵌套的 IF-FOR-IF 循环
- monaco-editor - 如何在摩纳哥编辑器中使用 setValue?
- docker - 如何将端口反向暴露给容器?
- reactjs - 默认禁用按钮单击事件未在 reactjs 上触发
- javascript - 使用 Selenium 时 Chrome 崩溃
- powershell - Powershell 将文件移动到特定文件夹
- javascript - 如何访问 vue-mc 模型密钥?