我在firebase云功能中遇到了一个情况,其中只有第一个控制台。执行日志或firestore更新语句。
我还有其他类似的函数,在处理响应的方式上略有不同,但这没有任何问题
我已经检查了谷歌云控制台/Firebase控制台等,源代码似乎已经正确上传
exports.myFunction = functions.firestore.document(docPath).onCreate(async (snapshot, context) => {
var inputData = snapshot.data();
console.log('printing request');
console.log(inputData);
//Prepare to call the api
var data = {'input': 'some value'};
var resource = 'api_resource';
// call api - below function is provided by an external provider and takes a callback function once api call is complete
myApi.call(resource, data.input, function (error, result) {
if (error) {
console.log('Error from api');
return { status: 'error', code: 401, message: 'Error from api' }
}
var apiResult = JSON.parse(result);
console.log('printing api response'); // <-- Anything below this does not get executed. When this is removed, next line is executed and so on
console.log(apiResult);
//Write to Firestore
snapshot.ref.update({
'status': 'computed',
})
.then((a) => {
console.log('Written successfully to db');
return 0;
})
.catch(err => {
console.log('Error setting db' + err);
return { status: 'error', code: 401, message: 'Error setting db ' }
});
// console.log('End of function');
return { status: 'success', code: 200, message: 'Completed successfully' }
});
});
我看到了另一个与这种情况相反的帖子。有人知道为什么会这样吗?
您需要将您的同步API包装在一个promise中—这里和这里的详细信息。
代码可能类似于:
exports.myFunction = functions.firestore.document(docPath).onCreate( (snapshot, context) => {
var data = 'some value'
var resource = 'api_resource';
const myAPIPromise = (resource, data) => {
return new Promise((resolve, reject) => {
myApi.call(resource, data, (error, result) => {
if (error) reject(error)
else resolve(result)
});
})
}
myAPIPromise(resource, data)
.then((result) => console.log(result))
.catch((err) => console.log(err))
});
很明显,你会想要添加回所有无关的日志,并调用我为了清晰起见删除的Firepose。
刚开始使用Ruby,我无法通过下面发布的错误。这是我的代码: 控制台中的错误: C: /Ruby23/lib/ruby/2.3.0/net/http。rb:933:inconnect来自C:/Ruby23/lib/ruby/2.3.0/net/http。rb:863:instart'来自C:/Ruby23/lib/ruby/2.3.0/net/http。rb:1398:inperform'来自C:
null 云存储桶是云功能工作所必需的吗?如果没有,我怎么能回到这些变化发生之前的地方。请引导我。
如何控制hadoop中的日志功能?Hadoop使用默认的log4j.properties文件来控制日志。我的用例是控制我的类生成的日志。 Hadoop守护进程(如JobTracker、TaskTracker、NameNode和DataNode守护进程)使用log4j。属性文件来自各自主机节点的。rootLogger设置为“INFO,console”,它将所有信息级别的消息记录到控制台。 我使用Oo
问题内容: 让我们考虑以下代码: 运行此代码段时,我将显示以下输出: 为什么我会得到不同的时区? 请注意,如果我将8月的第一个日期设置为9月,将第二个日期设置为9月,则在两种情况下输出将显示相同的时区: 将显示: 我正在使用Java 1.6.0_14 问题答案: 是中欧夏季时间。它与夏令时生效相同。
问题内容: 我看到一个奇怪的错误消息,并且正在寻找一些有关问题可能出在哪里的想法。我是使用JPA的新手。 我有一个应用程序,在其中使用Spring的实体管理器工厂(LocalContainerEntityManagerFactoryBean),EclipseLink作为我的ORM提供程序,并连接到MySQL数据库并由Maven构建。我不确定这是否重要..... 当我将此应用程序部署到Glassfi