我正在使用最新版本的 Parse Server,在发送 .js 文件之前进行 Typescript 编译。请注意,整个问题特定于云代码,而不是客户端实现。
到目前为止,这一直运行得很好,但现在我发现了一个我真的不知道如何解决的问题。考虑一个用于处理电子邮件事件的类,它有一个方法用于查找给定 ID 的用户电子邮件并向他发送消息:
async sendEmailToUserID(userId: string, subject: string, text: string){
const res = await new Parse.Query("User").equalTo("objectId", userId).find();
if(res){
const user = res[0];
const email = user.get("email");
return await this.sendEmail(email, subject, text);
}
}
我认为这个功能非常简单并且很容易解释。嗯,事实是,find() 函数可以正确检索用户的对象,但是 .get("email") 函数永远不会工作:它总是返回“未定义”。 p>
有人知道为什么会发生这种情况吗?
PD:是的,任何给定用户都存在“电子邮件”字段。
最佳答案
电子邮件是一个敏感字段,在发送到客户端进行匿名请求之前会从服务器中删除。
正如您所注意到的,您可以将“userMasterKey”添加到客户端查询中,但您永远不应该这样做,因为 masterKey 是一个 secret ,解析服务器的整个安全性取决于保密(如密码)。
使用主 key 在服务器、云代码或 php 服务器上进行查询是可以的,但在客户端代码(浏览器中的 ios、js、安卓等)
您可以使电子邮件和其他敏感字段可供经过身份验证的用户使用。这是一个新功能,尚未有详细记录,但您可以从测试中看到它是如何使用的:https://github.com/parse-community/parse-server/blob/f2c332ea6a984808ad5b2e3ce34864a20724f72b/spec/UserPII.spec.js#L526
关于javascript - 解析无法检索用户电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55691689/