我有这个函数,它接受DataSnapshot
作为参数。
我当前需要解决的问题是,我仍然必须事先知道我在Firestore文档中拥有哪些键。
这实际上还不够高效,我想找出一种方法来实际检索所有属于引用数据类型的字段,而无需事先知道键。这将使此Promise
更加有用,例如,您可以传递任何DataSnapshot
并将其解析为文档,并附加引用的文档。
getDenormalizedFields = (data: Object): Promise<any> => {
const denormalizeKeys = ['refOne', 'refTwo', 'refThree'];
const denormalizationPromise = new Promise(async (resolve: Function) => {
const denormalizations = await denormalizeKeys.map(
async (key: string) => {
const field = await data[key].get();
const fieldData = await field.data();
return { [key]: fieldData };
},
);
const promisedDenormalizations = await Promise.all(denormalizations);
const denormalized = Object.assign({}, ...promisedDenormalizations);
resolve(denormalized);
});
return denormalizationPromise;
};
答案 0 :(得分:0)
DocumentSnapshot上的data()
方法为您提供了包含文档内容的原始JavaScript对象。您可以像对待任何JavaScript对象一样,以常规方式iterate the keys of this object,然后检查每个键的值。您可以找出该值是否为DocumentReference by checking its type,然后对它采取任何所需的操作。