为什么我不能在 `beforeSave` 函数中使用 `useMasterKey()`?
Why can't I use `useMasterKey()` in a `beforeSave` function?
我的 Parse 应用程序有一个 GiftCode
集合,它不允许 class 级别的 find
操作。
我正在编写一个 beforeSave
云函数来防止我们的团队从 Parse 的仪表板输入重复代码:
Parse.Cloud.beforeSave('GiftCode', function (req, res) {
Parse.Cloud.useMasterKey();
const code = req.object.get('code');
if (!code) {
res.success();
} else {
const finalCode = code.toUpperCase().trim();
req.object.set('code', finalCode);
(new Parse.Query('GiftCode'))
.equalTo('code', finalCode)
.first()
.then((gift) => {
if (!gift) {
res.success();
} else {
res.error(`GiftCode with code=${finalCode} already exists (objectId=${gift.id})`);
}
}, (err) => {
console.error(err);
res.error(err);
});
}
});
如您所见,我正在调用 Parse.Cloud.useMasterKey()
(这是 Parse 云中的 运行),但我仍然收到以下错误:
This user is not allowed to perform the find operation on GiftCode.
我在其他普通云功能中使用 useMasterKey()
,并且能够根据需要执行 find
操作。
useMasterKey()
是否不适用于beforeSave
函数?
我从未尝试过在 beforeSave 函数中使用主密钥,但如果有一些额外的保护措施来防止它,我不会感到惊讶。从安全的角度来看,它似乎可以使所有 write-based CLP 和 ACL 对于 class.
毫无价值
像这样将主密钥作为选项传递给查询,尝试有选择地使用主密钥
(new Parse.Query('GiftCode'))
.equalTo('code', finalCode)
.first({ useMasterKey: true })
.then((gift) => {
...
Parse.Cloud.useMasterKey();已在 Parse Server 版本 2.3.0(2016 年 12 月 7 日)中弃用。从那个版本开始,它是一个空操作(它什么都不做)。您现在应该将 {useMasterKey:true} 可选参数插入代码中需要覆盖 ACL 或 CLP 的每个方法。
我的 Parse 应用程序有一个 GiftCode
集合,它不允许 class 级别的 find
操作。
我正在编写一个 beforeSave
云函数来防止我们的团队从 Parse 的仪表板输入重复代码:
Parse.Cloud.beforeSave('GiftCode', function (req, res) {
Parse.Cloud.useMasterKey();
const code = req.object.get('code');
if (!code) {
res.success();
} else {
const finalCode = code.toUpperCase().trim();
req.object.set('code', finalCode);
(new Parse.Query('GiftCode'))
.equalTo('code', finalCode)
.first()
.then((gift) => {
if (!gift) {
res.success();
} else {
res.error(`GiftCode with code=${finalCode} already exists (objectId=${gift.id})`);
}
}, (err) => {
console.error(err);
res.error(err);
});
}
});
如您所见,我正在调用 Parse.Cloud.useMasterKey()
(这是 Parse 云中的 运行),但我仍然收到以下错误:
This user is not allowed to perform the find operation on GiftCode.
我在其他普通云功能中使用 useMasterKey()
,并且能够根据需要执行 find
操作。
useMasterKey()
是否不适用于beforeSave
函数?
我从未尝试过在 beforeSave 函数中使用主密钥,但如果有一些额外的保护措施来防止它,我不会感到惊讶。从安全的角度来看,它似乎可以使所有 write-based CLP 和 ACL 对于 class.
毫无价值像这样将主密钥作为选项传递给查询,尝试有选择地使用主密钥
(new Parse.Query('GiftCode'))
.equalTo('code', finalCode)
.first({ useMasterKey: true })
.then((gift) => {
...
Parse.Cloud.useMasterKey();已在 Parse Server 版本 2.3.0(2016 年 12 月 7 日)中弃用。从那个版本开始,它是一个空操作(它什么都不做)。您现在应该将 {useMasterKey:true} 可选参数插入代码中需要覆盖 ACL 或 CLP 的每个方法。