使用Firebase云功能我正在尝试扩展firestore文档中的uri并将其替换为扩展的uri。
我正在使用运行良好的高npm包(https://www.npmjs.com/package/tall),我只是无法将生成的扩展uri放入我的对象中以放回到firestore中。
我相信它在我的其余功能完成之前没有返回,因此没有给我数据。当我尝试在页面上使用异步的示例并使用await firebase时会出错。
我假设我错过了一些非常简单的东西,但经过一整天的上传到云功能,测试和再次尝试,我感到非常沮丧。
我错过了什么?
exports.addonSanitized = functions.firestore
.document('addons/{addonId}')
.onCreate(doc => {
const addonId = doc.id;
const addon = doc.data();
const expandedLink = tall(addon.link)
.then(unshortenedUrl => console.log('Tall url', unshortenedUrl))
.catch(err => console.error('AAAW 👻', err));
const sanitized = {
summary: `${expandedLink}`
};
return admin
.firestore()
.collection('addons')
.doc(addonId)
.update(sanitized)
.then(doc => console.log('Entry Sanitized', doc));
});
我希望扩展的链接返回扩展的链接。正在输入文件的是[对象承诺]
你得到“[对象承诺]”,因为expandedLink
的价值是Promise
。
你真正想要的价值是unshortenedUrl
。您只能在then()
中存在该值,因此您需要返回tall
Promise,并在then()
中包含其他return语句。
可能是这样的(未经测试):
exports.addonSanitized = functions.firestore
.document('addons/{addonId}')
.onCreate(doc => {
const addonId = doc.id;
const addon = doc.data();
return tall(addon.link)
.then(unshortenedUrl => {
console.log('Tall url', unshortenedUrl)
const sanitized = {
summary: `${unshortenedUrl}`
};
return admin
.firestore()
.collection('addons')
.doc(addonId)
.update(sanitized)
.then(doc => console.log('Entry Sanitized', doc));
})
.catch(err => console.error('AAAW 👻', err));
});