我正在使用由 Back4app 托管的 Parse 服务器 3.10。我已经启用了允许在服务器自定义设置中使用自定义 Id 的选项,
{"allowCustomObjectId": true}
,现在我可以通过这样的 API 调用来设置对象的自定义 Id。
-H "X-Parse-Application-Id: APPLICATIONID"
-H "X-Parse-REST-API-Key: REST_KEY"
--data-urlencode "{"objectId":"xWMyZ4YEGZ","name":"Nat"}"
https://parseapi.back4app.com/classes/Test
但是我需要通过云代码来设置它,现在我正在尝试做这样的事情,但这不起作用。
Parse.Cloud.define("setId",async (request) => {
const GameScore = Parse.Object.extend("GameScore");
const gameScore = new GameScore();
gameScore.set("objectId", "8YgwDJ19qX");
gameScore.set("name","nat");
return await gameScore.save(null,{useMasterKey:true});
});
当我尝试运行此云函数时,这是我收到的错误。
{
"code": 101,
"error": "Object not found."
}
期待解决方案。
目前似乎无法使用 JavaScript 通过云代码设置自定义 ID。解决此问题的方法是通过云代码使用 REST API,如下所示:
Parse.Cloud.define("createObjectId", async (request) => {
//Your custom id
const objectId = "8YgwDJ18qX";
//Your Class name and another optional class variable
const { nameClass, propertyName } = request.params;
//Make sure to define these environment variables in your server's env file
const { APPLICATION_ID, REST_KEY, SERVER_URL } = process.env;
//Finally call hit the api.
return Parse.Cloud.httpRequest({
method: 'POST',
url: `${SERVER_URL}/classes/${nameClass}`,
headers: {
'Content-Type': 'application/json;charset=utf-8',
'X-Parse-Application-Id':APPLICATION_ID,
'X-Parse-REST-API-Key':REST_KEY
},
body: {
objectId: objectId,
name: propertyName
}
});
});
您可以添加
allowCustomObjectId
并将其设置为 true
https://parseplatform.org/parse-server/api/master/ParseServerOptions.html