typescript - Firebase中用于设置数据的困难结构定义
问题描述
更新: 所以基本上这是我的 firebase 结构,我编辑了 users 集合以创建一个名为 ListaFavorite 的特殊列表,该列表显示用户将在其会话中添加的所有最喜欢的项目。问题是,我必须在原始 UserInterface 文件中定义与 firebase 完全相同的结构。
我声明的 favoriteObj 存储来自项目字段的值并将它们带到 firebase ,但是由于我不能在界面中使用对象,我如何将结构设置为 favoriteObj?
对不起,如果我没有说清楚,但这基本上就是我想要的。
我正在尝试匹配我的结构:
const favoriteObj = {};
favoriteObj[uniqID] = {
favorite_title: favorite_title,
favorite_description: favorite_description,
favorite_image: favorite_image,
favorite_tag: favorite_tag,
favorite_stoc: favorite_stoc,
favorite_reducere: favorite_reducere,
favorite_price: favorite_price,
favorite_userId: favorite_userId,
isFavorite: true,
};
从firebase到我的用户界面是:
export interface User {
uid: string;
email: string;
displayName: string;
photoURL: string;
emailVerified: boolean;
FavoriteID: string;
SavedFavorite: boolean;
AddCosID: string;
SavedCos: boolean;
ListaFavorite: ... // here i must pass the favoriteObj
}
之后,我必须在函数中包含更新数据:
SetUserData(user) {
const userRef: AngularFirestoreDocument<any> = this.afStore.doc(
`users/${user.uid}`
);
const userData: User = {
uid: user.uid,
email: user.email,
displayName: user.displayName,
photoURL: user.photoURL,
emailVerified: user.emailVerified,
FavoriteID: null,
SavedFavorite: null,
AddCosID: null,
SavedCos: null,
ListaFavorite : ...
};
return userRef.set(userData, {
merge: true,
});
}
我的观点是将收藏的对象标记到当前用户界面中,然后根据用户登录的收藏页面调用所有对象。我真的不知道如何在那里传递 obj 。有什么帮助吗??
解决方案
要将对象添加到接口,您需要执行所谓的嵌套接口。你应该为 favoriteObj 创建一个接口:
interface FavoriteObj {
favorite_title: string,
favorite_description: string,
favorite_image: string,
...
}
然后将其嵌套在用户界面中[key: string]
,使用我们所说的可索引类型
export interface User {
uid: string;
email: string;
displayName: string;
photoURL: string;
emailVerified: boolean;
FavoriteID: string;
SavedFavorite: boolean;
AddCosID: string;
SavedCos: boolean;
ListaFavorite: {
[key: string]: FavoriteObj
}
}
推荐阅读
- c# - 使用 NetDataContractSerializer 从 DataContract 集成到 IXmlSerializable
- python - AssertionError:视图函数映射正在覆盖现有端点函数:bot
- python - NameError:使用 dtw 时未定义名称“rabinerJuangStepPattern”
- swift - SKProduct Swift - 信息从何而来?
- javascript - Puppeteer:在 page.$eval 内执行 element.click()
- postgresql - 如何监控来自从站的异步流复制延迟?
- reactjs - ReachRouter 在组件构造函数中导航
- sap - 在 sap hybris 中,是否有任何内置方式可以在产品图像上显示标签?
- html - CSS 检查元素是否存在并应用于第一个元素
- c++ - try_emplace 的惰性参数评估?