我创建了一个提供程序来处理所有与firebase数据库相关的调用 . 如果方法getUser写为foll . 然后它返回对象(注意.once是一个promise) .
getUser()
{
return firebase.database().ref(`/users/`)
.once('value', dataSnapshot => {dataSnapshot.val();
});
}
但是,如果对象为null,则返回null,我必须在页面级别处理此问题,如下所示:
ngOnInit() {
this.dbcon.getUser().then(dbvalue=>{
if(dbvalue.val()){
//..do soemthing..
}
});
理想情况下,我希望提供者返回一个有效的对象或类似{sorcode:''},但不是null . 任何建议在提供者级别这样做都会有所帮助 .
我尝试在提供程序级别实现此功能,并期望它返回硬编码对象{sorcode:''} . 但它只返回null .
页面代码:
ngOnInit() {
this.dbcon.getUser().then(dbvalue=>{
console.log(dbvalue.val());
});
}
提供者代码(注意.once是一个承诺):
getUser()
{
return firebase.database().ref(`/users/`).once('value', dataSnapshot => {
if (dataSnapshot.val()==null)
{
{sorcode:''};
}
else
{
dataSnapshot.val();
}
});
}
如果我在IF循环中使用'return'关键字,而不是在调用promise之前(如下所示),那么它在页面上给出一个错误:“无法读取属性'然后'未定义”
提供商代码:
getUser()
{
firebase.database().ref(`/users/`).once('value', dataSnapshot => {
if (dataSnapshot.val()==null)
{
return {sorcode:''};
}
else
{
return dataSnapshot.val();
}
});
}
如果我在IF循环中使用'return'关键字,并且在调用promise之前(如下所示),那么它仍然会给出原始问题 - 当对象不存在时返回null .
提供商代码:
getUser()
{
return firebase.database().ref(`/users/`).once('value', dataSnapshot => {
var x=dataSnapshot.val();
if (x==null)
{
return {sorcode:''};
}
else
{
return dataSnapshot.val();
}
});
}
1 回答
缺少
return
个陈述 .之一:
要么
UPDATE
来自here»返回firebase.Promise [...]« . 所以应该是(?):
接下来,第二个论点是“成功回调”