node.js - Firebase函数不返回值
问题描述
我正在尝试使用 oncall 函数进行一些操作,我首先检查用户是否存在于数据库中,然后如果他存在,则执行一些操作,例如更新数据库。好吧,该函数按预期工作并更新了数据库,但它返回的响应为 null,所以我无法确定到底发生了什么。
exports.populateCart = functions.https.onCall((data, context) => {
const user = context.auth.uid;
DB.collection('users').doc(user).get().then((usr_resp) => {
if (usr_resp.exists) {
DB.collection('products').doc(data.productKey).get().then((prod_res) => {
DB.collection('carts').add({
//some data
}).then(() => {
return {
response: 'CART UPDATED'
};
}).catch((carts_err) => {
return {
response: 'ERROR WHILE POPULATING CART : ' + carts_err
}
});
}).catch((prod_err) => {
return {
response: 'ERROR WHILE FETCHING PRODUCT : ' + prod_err
};
});
}
else {
return {
response: 'USER DOES NOT EXISTS OR USER NOT AUTHENTICATED'
};
}
}).catch((usr_err) => {
return {
response: 'ERROR WHILE FETCHING USER : ' + usr_err
};
});
});
还有一个关于堆栈溢出的类似问题,建议使用该解决方案,
reject(err);
resolve(lists);
方法,如果解决方案是使用上述方法,请详细说明该方法的用例,如果有更多这样的方法,请说明。
解决方案
你没有兑现你的承诺。(见下文第 3 行)
exports.populateCart = functions.https.onCall((data, context) => {
const user = context.auth.uid;
// add return here before Db.collection()
return DB.collection('users').doc(user).get().then((usr_resp) => {
if (usr_resp.exists) {
return DB.collection('products').doc(data.productKey).get().then((prod_res) => {
return DB.collection('carts').add({
//some data
}).then(() => {
return {
response: 'CART UPDATED'
};
}).catch((carts_err) => {
return {
response: 'ERROR WHILE POPULATING CART : ' + carts_err
}
});
}).catch((prod_err) => {
return {
response: 'ERROR WHILE FETCHING PRODUCT : ' + prod_err
};
});
}
else {
return {
response: 'USER DOES NOT EXISTS OR USER NOT AUTHENTICATED'
};
}
}).catch((usr_err) => {
return {
response: 'ERROR WHILE FETCHING USER : ' + usr_err
};
});
});
推荐阅读
- php - 如何正确处理 symfony API 请求中的异常
- ibm-cloud - IBM Watson Assistant:如何让聊天机器人使用动态选项列表进行响应
- arcore - Google 如何通过浏览器链接启动 AR Animals ARCore 应用程序?
- php - 如何同时从数据透视表和主表中删除项目
- elasticsearch - 我的弹性平均查询错误 - 格式错误
- javascript - 如何修改我的自定义输入组件以使用 vee-validate?
- javascript - 在连接字符串中使用 Dbname 时出现 MongoDB/Mongoose 连接错误
- python - 图像处理:将普通图片转换为具有内在矩阵的 FishEye 图像
- android - Android TV 上的文件提供程序问题
- php - 如何在视图中调用辅助类的函数 - Laravel 5.8?