更新 class 的数据但省略一个字段(Angular、Firestore、AngularFire2)
Updating data for a class but omitting one field (Angular, Firestore, AngularFire2)
我想在每次用户登录时更新我的 Firestore 中的一些字段。我有以下方法。
private updateUserData(user: firebase.User) {
const userRef: AngularFirestoreDocument<AppUser> = this.afs.doc(
`users/${user.uid}`
);
const data: AppUser = {
uid: user.uid,
email: user.email,
name: user.displayName
};
return userRef.set(data, { merge: true });
}
我有一个用户模型 class 像这样:
export class AppUser {
uid: string;
email: string;
name?: string;
isAdmin: boolean;
}
我想更新除 isAdmin 字段之外的所有内容,所以我创建了一个变量:
const data: AppUser = {
uid: user.uid,
email: user.email,
name: user.displayName
};
代码工作正常,但我在寻找 isAdmin 字段时遇到编译器错误。有什么方法可以忽略更改 isAdmin 字段吗?
我认为您需要在 AppUser class 中将 isAdmin
字段设为可选。这可能就是您出错的原因。此外,如果您只想定义 JS 对象的类型,我可能会考虑使用 interface
而不是 class。
然后,为了简单地省略该字段,我建议使用 Lodash。
import * as _ from 'lodash';
private updateUserData(user: firebase.User) {
const userRef: AngularFirestoreDocument<AppUser> = this.afs.doc(
`users/${user.uid}`
);
return userRef.set(_.omit(data, 'isAdmin'), { merge: true });
}
在此处查看更多内容:https://lodash.com/docs/4.17.10#omit
我想在每次用户登录时更新我的 Firestore 中的一些字段。我有以下方法。
private updateUserData(user: firebase.User) {
const userRef: AngularFirestoreDocument<AppUser> = this.afs.doc(
`users/${user.uid}`
);
const data: AppUser = {
uid: user.uid,
email: user.email,
name: user.displayName
};
return userRef.set(data, { merge: true });
}
我有一个用户模型 class 像这样:
export class AppUser {
uid: string;
email: string;
name?: string;
isAdmin: boolean;
}
我想更新除 isAdmin 字段之外的所有内容,所以我创建了一个变量:
const data: AppUser = {
uid: user.uid,
email: user.email,
name: user.displayName
};
代码工作正常,但我在寻找 isAdmin 字段时遇到编译器错误。有什么方法可以忽略更改 isAdmin 字段吗?
我认为您需要在 AppUser class 中将 isAdmin
字段设为可选。这可能就是您出错的原因。此外,如果您只想定义 JS 对象的类型,我可能会考虑使用 interface
而不是 class。
然后,为了简单地省略该字段,我建议使用 Lodash。
import * as _ from 'lodash';
private updateUserData(user: firebase.User) {
const userRef: AngularFirestoreDocument<AppUser> = this.afs.doc(
`users/${user.uid}`
);
return userRef.set(_.omit(data, 'isAdmin'), { merge: true });
}
在此处查看更多内容:https://lodash.com/docs/4.17.10#omit