我在 Azure SWA 中有一个 api,需要从 Azure 表存储检索数据。
我正在 M1 MAC 上使用 VSCode 运行本地开发,带有 Function 和 SWA 扩展(一个开发容器),并且 Docker 配置为使用 Rosetta。
函数正确返回静态数据。响应具有正确的内容类型和有效负载。即使在表客户端上调用 .listEntities 也会导致响应具有纯文本/文本内容类型和空负载。有什么想法吗?
取消listEntities中三行的注释将导致响应为空。
const client = new TableClient(`https://${account}.table.core.windows.net`,
tableName,sharedKeyCredential);
const good = [{id:3,value:"foo"}];
const httpTrigger: AzureFunction = async function (context: Context, req: HttpRequest): Promise<void> {
listEntities()
.then(e => {
context.res = {
status: 200,
headers: {'Content-Type': 'application/json'},
body: {info:e} };
});
};
async function listEntities(): Promise<any[]> {
// for await (const entity of client.listEntities()) {
// console.log("working");
// };
return good;
}
export default httpTrigger;
原来我错过了触发函数中的返回。应该返回 Promise,而不仅仅是调用链。
...
const httpTrigger: AzureFunction = async function (context: Context, req:
HttpRequest): Promise<void> {
return listEntities()
.then(e => {
...