在 Parse 平台上使用 ObjectId 发布新记录

Posted

技术标签:

【中文标题】在 Parse 平台上使用 ObjectId 发布新记录【英文标题】:Post new record with ObjectId on Parse platform 【发布时间】:2021-06-12 14:47:59 【问题描述】:

我正在尝试使用 objectId(投诉一)将新记录插入到解析平台表中。

但是,当我进行 POST 调用时:

curl -X POST \
-H "X-Parse-Application-Id: $APPLICATION_ID" \ 
-H "X-Parse-Master-Key: $MASTER_KEY" \
-H "Content-Type: application/json" \
-d '"objectId": "xdH402yd9z", "field": "testData"' $URL

帖子失败:"code":105,"error":"objectId is an invalid field name."

如何插入现有 objectId 的记录?

注意:我插入的数据与我之前从解析服务器中得到的数据基本相同,但几乎没有细微的变化。

谢谢。

【问题讨论】:

【参考方案1】:

默认情况下禁用使用自定义objectId。您需要在服务器上启用customObjectId。根据您启动服务器的方式,您可以在 app.js 中尝试以下内容:

const api = new ParseServer(
  databaseURI: databaseUri || 'mongodb://localhost:27017/dev',
  cloud: process.env.PARSE_SERVER_CLOUD || __dirname + '/cloud/main.js',
  appId: process.env.PARSE_SERVER_APPLICATION_ID || 'myAppId',
  masterKey: process.env.PARSE_SERVER_MASTER_KEY || '',
  //readOnlyMasterKey: process.env.PARSE_SERVER_READ_ONLY_MASTER_KEY,
  encryptionKey: process.env.PARSE_SERVER_ENCRYPTION_KEY,
  objectIdSize: parseInt(process.env.PARSE_SERVER_OBJECT_ID_SIZE) || 10,
  serverURL: process.env.PARSE_SERVER_URL || 'http://localhost:' +process.env.PORT + '/parse',
  publicServerURL: process.env.PARSE_PUBLIC_SERVER_URL || 'http://localhost:' +process.env.PORT + '/parse',
  allowCustomObjectId: true, // Here's what you need to enable

您可以在此处查看完整示例:https://github.com/netreconlab/parse-hipaa/blob/parse-swift/parse/index.js

也可以设置环境变量:

PARSE_SERVER_ALLOW_CUSTOM_OBJECT_ID = 1

【讨论】:

添加 allowCustomObjectId: true 有效!

以上是关于在 Parse 平台上使用 ObjectId 发布新记录的主要内容,如果未能解决你的问题,请参考以下文章

Parse 中的 objectId 为 null,虽然在将对象保存到 Parse 云时没有 ParseException

使用 Parse 方法 getObjectInBackgroundWithId 将 objectId 从 viewDidLoad 传递给另一个函数不起作用

将 Small Parse ID 迁移到普通 MongoDB 的 ObjectID

Parse-JS-SDK,matchesKeyInQuery 不适用于 objectId。

Parse.com用java创建objectId

从云代码函数返回基于 objectId 的 Parse.User 对象列表