Angular 如何使用主密钥初始化解析服务器的SDK[7]

Angular 如何使用主密钥初始化解析服务器的SDK[7],angular,parse-server,angular7,Angular,Parse Server,Angular7,为了在解析服务器上执行特定请求,我需要使用主密钥 我试图初始化它,但似乎我没有正确的方式,因为我仍然有这个错误:错误:未捕获(承诺):错误:无法使用主密钥,它尚未提供 这是我的密码: Parse.initialize('myAppId', '', 'myMasterKey'); // appID, js key & master key (Parse as any).serverURL = 'https://myServerUrl'; 问题可能是由于参数中的js键是空的(我的项目只使

为了在解析服务器上执行特定请求,我需要使用主密钥

我试图初始化它,但似乎我没有正确的方式,因为我仍然有这个错误:错误:未捕获(承诺):错误:无法使用主密钥,它尚未提供

这是我的密码:

Parse.initialize('myAppId', '', 'myMasterKey');  // appID, js key & master key
(Parse as any).serverURL = 'https://myServerUrl';

问题可能是由于参数中的js键是空的(我的项目只使用masterkey)。欢迎任何帮助……

我确实找到了解决方案。 我最终没有将masterkey放入初始化:

Parse.initialize('myAppId', ''); // appID, js key
(Parse as any).serverURL = 'https://myServerUrl'; // use your server url
(Parse as any).masterKey = 'myMasterkey';

从你的问题来看,我猜这是对客户有利的。在这种情况下,您不想使用主密钥。如果我加载你的页面,我将能够获取你的主密钥并查看你解析服务器的url,并且我将能够使用你解析服务器的RESTAPI读取任何数据。我可以创建或删除我想要的任何数据

解决此问题的方法是在服务器上使用。例如,如果您希望允许“用户a”向“用户b”发送电子邮件,您将无法在客户端执行此操作,因为如果没有主密钥,就无法将“用户b”的电子邮件发送到用户a的客户端

因此,您创建了一个云函数
sendmail
,它接受两个参数:要发送电子邮件的用户id和要发送的消息。未经测试的代码如下所示:

const sendEmail = async function sendEmail(request) {
   const { user: sender } = request;
   const { id, message } = request.params;
   const recipient = await Parse.Query(Parse.User).get(id, { useMasterKey: true });
   console.log(recipient.get('email')); // now we have the user's email!
   ..... // code to actually send email here...
}

Parse.Cloud.define('sendEmail', sendEmail);
然后您可以从前端调用它,如:

Parse.Cloud.run('sendEmail', { id: 'objectId', message: 'hi' });

此模式允许您执行特权操作,如获取用户电子邮件,而无需向加载您页面的任何人透露您的主密钥。

非常感谢您的回答。这不是本文的目的,我只是想使用万能钥匙,这就是问题所在。我将在我的解析服务器上为这个项目使用云代码,但暂时不使用。