我试图使一个JSON调用异步/等待使用云函数为Firebase。
你知道如何修复下面的代码吗?我的计划失败了。
我的灵感是https://www.valentinog.com/blog/http-requests-node-js-async-await/
部署误差
函数[setDetails]:部署错误。
异步URL
SyntaxError:对象的createScript(vm.js:56:10)处出现意外标识符。在模块上运行InthisContext(vm.js:97:10)_在对象处编译(module.js:542:28)。模块_扩展。。js(module.js:579:10)在模块中。在getUserFunction(/var/tmp/worker/worker.js:378:24)的require(internal/module.js:20:19)处加载(module.js:487:32)
指数JS
'use strict';
const functions = require('firebase-functions');
const admin = require('firebase-admin');
// Promise based HTTP client for the browser and node.js
const axios = require('axios');
admin.initializeApp(functions.config().firebase);
const url = 'https://api.xxxx.com/json?partnumber=';
const getDetails = async url => {
try {
const response = await axios.get(url);
const data = response.data;
const getDet = data.results[0].details;
return getDet;
} catch (error) {
console.log(error);
return error;
}
};
exports.setDetails = functions.database.ref('/equipment/{pushId}').onWrite((event) => {
const post = event.data.val();
if (post.details){ return };
const number = post.number;
const details = getDetails(url + number);
admin.database().ref('/equipment/{pushId}').push({number: number, details: details});
});
JSON包
{
"name": "look-at-details",
"description": "bla bla bla",
"dependencies": {
"axios": "^0.18.0",
"firebase-admin": "^5.9.1",
"firebase-functions": "^0.8.1"
},
"scripts": {
"serve": "firebase serve --only functions",
"shell": "firebase experimental:functions:shell",
"start": "npm run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log"
}
}
另一种解决方案不是使用async wait
,而是使用另一个名为request promise any
云函数还不支持异步/等待。云函数运行Node6,它不使用支持async/await的JavaScript版本。部署失败,因为它不知道async
关键字。
相反,您可以初始化您的项目以使用TypeScript,它支持异步/等待。Firebase CLI将自动将您的代码转移到使用Promises实现异步/等待的ES6。
问题内容: PHP中有没有办法进行异步HTTP调用?我不在乎响应,我只想做类似的事情,但不等待请求完成再执行其余代码。这对于在我的应用程序中触发某种“事件”或触发较长的进程非常有用。 有任何想法吗? 问题答案: 我以前接受的答案没有用。它仍然在等待回应。但这确实有效,取自我如何在PHP中发出异步GET请求?
问题内容: 我对后端非常熟悉。但是我遇到了一种情况,我必须在前端使用它。 我正在获取对象的数组,并且在那些对象中我获取了位置。现在,我可以获取单个地名,但是我想在map函数中使用该名称来获取地名。因此,正如我们所知道的那样,我必须在那边使用。 这是代码 但是,当我在此处将map函数与async一起使用时,它不会返回任何内容。谁能帮我解决我的问题? 谢谢!!! 问题答案: 您应该始终将获取数据等关注
问题内容: 在我的程序中,我从另一个API模块调用了我的函数: 模块代码: 执行立即返回,但是,并因此包含请求对象和请求体- 样,不需要响应体。 我做错了什么?怎么修?正确的用法是什么,或仅与此处提到的Promise一起正确使用:为什么await对于节点请求模块不起作用?以下文章提到了可能的方法:在Node.js中掌握Async Await 。 问题答案: 您需要使用模块,而不是模块或。 对返回p
我试图用Firebase函数做一个理论上相对简单的函数。 具体地说: > 向所有用户的实时数据库变量添加 向所有用户发送通知 我仍然在努力理解/,这可能就是为什么我在这个问题上如此纠结的原因。 我正在做的是: 然后就有了: 和函数: 我当前得到的错误是: “Await”表达式仅允许在异步函数中使用。 const devices=await devicesref.get(); 但即使我得到它没有错误
问题内容: 我的量角器conf.js 函数需要发出一个看起来像这样的http请求, 它会引发错误, 还有其他方法可以强制在测试开始执行之前调用内部回调吗? 问题答案: 可以选择返回量角器在开始执行测试之前将解决的承诺: 可以选择返回一个承诺,量角器将在继续执行之前等待。如果准备工作涉及任何异步调用,例如与浏览器进行交互,则可以使用此方法。否则,量角器不能保证执行顺序,并可能在准备工作完成之前开始测
我有2个微服务(A和B)。 有一个接受POST请求的endpoint。当用户发出发布请求时,会发生以下情况: 服务A从POST请求正文中获取对象并将其存储在数据库中。 服务A将对象转换为不同的对象。新对象通过泽西HTTP客户端发送到服务B。 步骤 2 发生在我创建的 Java 线程池(Executors.new缓存线程池)上。通过在新线程上执行步骤 2,服务 A 的终结点的响应时间不受影响。 但是