2
Firebase에서 항목의 스냅 샷을 가져와 나중에 경로에서 사용할 수 있도록해야합니다. Null 값이 입력되지 않도록하는 유효성 검사가 있습니다. 이 스냅 샷을 사용하기 전에 유효성 검사가 정상적으로 작동했습니다. 그러나이 스냅 샷을 ionViewDidLoad 및 생성자에 저장하면 페이지가 처음로드 될 때 유효성 검사가 발생하고 제출 시도가 올바르게 수행됩니다. 이 문제를 어떻게 해결할 수 있습니까? 나는이 해결할 수 있었다Firebase 스냅 샷을 가져 오면 유효성 검사 오류가 발생합니다.
export class CustomItemPage {
user: {};
items: FirebaseListObservable<any[]>;
customitemname: string = '';
customitemcat: string = '';
listKey = "";
ionViewDidLoad(){
firebase.auth().onAuthStateChanged((user)=> {
this.user = user;
console.log('authStateINVITE',user);
if (user) {
// User is signed in.
var displayName = user.displayName;
var email = user.email;
var emailVerified = user.emailVerified;
var photoURL = user.photoURL;
var isAnonymous = user.isAnonymous;
var uid = user.uid;
var providerData = user.providerData;
// this.navCtrl.setRoot(TutorialPage);
// ...
} else {
// User is signed out.
// ...
}
});
var user = firebase.auth().currentUser;
var uid = user.uid;
firebase.database().ref('/userprofile/' + uid + '/' + 'list').once('value').then((snapshot)=> {
var listkey = (snapshot.val());
console.log(listkey)
this.listKey = listkey;
this.addcustomitem();//, listkey);
});
}
constructor(public navCtrl: NavController, private afAuth: AngularFireAuth, public af: AngularFireDatabase, public alerCtrl: AlertController, private toastCtrl: ToastController) {
this.items = af.list('/messages', {
query: {
limitToLast: 50
}
});
//this.user = this.afAuth.authState;
}
logout() {
this.afAuth.auth.signOut();
this.navCtrl.setRoot(SignInPage)
}
addcustomitem() {
var listkey = this.listKey;
var customitemname = this.customitemname;
var customitemcat = this.customitemcat
var customlistData = {
category: customitemcat,
foodname: customitemname,
state: "on",
};
var user = firebase.auth().currentUser;
var uid = user.uid;
var foodid = firebase.database().ref().child('posts').push().key;
if (customitemname==null || customitemname=="")
{
let alert = this.alerCtrl.create({
title: 'Error!',
message: 'Please enter a name for your item.',
buttons: ['Ok']
});
alert.present()
}
else if (customitemcat==null || customitemcat=="")
{
let alert = this.alerCtrl.create({
title: 'Error!',
message: 'Please enter a category for your item.',
buttons: ['Ok']
});
alert.present()
}
else{
this.navCtrl.pop(); //SENDS TO PREVIOUS PAGE
let toast = this.toastCtrl.create({
message: customitemname + ' was added successfully',
duration: 3000,
position: 'bottom'
});
toast.onDidDismiss(() => {
console.log('Dismissed toast');
});
toast.present();
return firebase.database().ref('userlists' + '/' + listkey + '/' + 'list' + '/' + foodid).update(customlistData);
}
}
}