AWS EC2 上的解析服务器在云代码上给出 141 错误
Posted
技术标签:
【中文标题】AWS EC2 上的解析服务器在云代码上给出 141 错误【英文标题】:Pasre server on AWS EC2 giving 141 error on cloud code 【发布时间】:2021-05-05 04:38:58 【问题描述】:我现在使用以下云代码仅更新在 AWS EC2 实例上运行的解析服务器上的“下载”列。但我收到错误代码 141(无效函数)
Parse.Cloud.define("updateDownloads", async (request) =>
const query = new Parse.Query(request.params.className);
query.get(request.params.objectId)
.then((watchFace) =>
downloads = watchFace.get("downloads")
watchFace.set("downloads", downloads + 1);
await watchFace.save(null, useMasterKey: true );
return "download updated";
, (error) =>
return "something went wrong";
);
);
我已将我的代码放入/opt/bitnami/cloud/main.js
。
我什至尝试在 config.json 文件中添加“cloud”: “/opt/bitnami/cloud/main.js”
,但是解析服务器给出了 503 Service Unavailable 错误。所以我删除了它。
【问题讨论】:
没有这样的选项,但您可以尝试两种不同的方法:1) 将它们全部设为只读并创建一个云代码函数来使用 useMasterKey 选项写入此特定列 2) 使它们全部可写并且使用 beforeSave 触发器来验证是否仅更改了下载列。 嘿@DaviMacêdo,感谢您的帮助。但是我使用 AWS EC2 实例来托管我的解析服务器,并且我在 main.js 中添加了我的云功能,但现在我收到错误代码 141。对此有任何帮助吗? 您需要检查您的日志。您的 main.js 文件中可能有一些错误。此外,您需要确保正确初始化解析,将云代码指向此 main.js 文件。如果您分享您当前的代码,我可以尝试提供帮助。 @DaviMacêdo 请在上面找到代码。 【参考方案1】:如果您不将云代码main.js
文件添加到解析服务器配置中,解析服务器将永远找不到您的函数,这就是您收到无效函数错误的原因。
如果添加文件时出现错误,要么是添加方式错误(需要检查解析服务器初始化代码),要么是 config.json 格式错误或云代码有问题。
最好的办法是检查你的日志。
乍一看,我看到的一个问题(可能还有其他问题)是在不是async
的函数中使用await
。您还使用了async
和then
的组合,这有点奇怪。
我建议您将代码更改为:
Parse.Cloud.define("updateDownloads", async (request) =>
const query = new Parse.Query(request.params.className);
const watchFace = await query.get(request.params.objectId);
const downloads = watchFace.get("downloads");
watchFace.set("downloads", downloads + 1); // You can use inc function to avoid concurrency problem
await watchFace.save(null, useMasterKey: true );
return "download updated";
);
【讨论】:
你是救世主。现在一切正常。我什至在 config.json 中添加了云路径,一切正常。 另外,为了让这个工作,我必须更新我的应用程序。你能告诉我如何实现 beforeSave 只需通过 +1 更新“下载”列。 我不确定我是否理解您的需求,但我建议您尝试一下,并在您无法弄清楚的情况下提出一个新问题。无论如何,我相信你可以使用增量函数(docs.parseplatform.org/js/guide/#counters)和 beforeSave 触发器(docs.parseplatform.org/cloudcode/guide/#beforesave)来实现你所需要的。 我想添加云代码以仅更新特定列并将其值增加 1。我已允许“更新”CLP,因此我想检查 beforeSave 仅增加“下载”列并且不能为安全性更改任何其他列值。 您可以比较 request.object 与 request.original 数据。以上是关于AWS EC2 上的解析服务器在云代码上给出 141 错误的主要内容,如果未能解决你的问题,请参考以下文章
AWS 弹性 beanstalk ec2 服务器上的 node.js 命令
FCM 与 Prase-server 托管在 AWS EC2 上