如何在Node(jsforce)中使用SOAP / REST API创建PushTopic

时间:2015-09-03 16:56:25

标签: javascript node.js salesforce

根据https://salesforce.stackexchange.com/questions/48901/create-streaming-pushtopic-using-rest-api,我应该可以使用标准的sobject API来创建PushTopic。但是,当我这样做时,我收到错误

  

请求的资源不存在。

事实上,我甚至无法描述这个对象。

我正在使用nodejsforce对此进行测试。我已成功使用execute anonymous apex code中的developer console来创建主题,但我要求它在我自己的服务器内完成。

我的代码如下:

var jsforce = require('jsforce');
var config = {...};
var conn = new jsforce.Connection({
  oauth2 : {
    clientId : config.oauthClientId,
    clientSecret : config.oauthSecret,
    redirectUri : config.oauthCallbackUrl
  },
  instanceUrl : config.instanceUrl,
  accessToken : config.accessToken,
  refreshToken: config.refreshToken
});

conn
  .sobject('PushTopic')
  .describe()
  .then(function(ret){
    console.log('Description:', ret)
  }, function(err){
    console.log('Error:', err)
  });

我得到:

  

错误{[NOT_FOUND:请求的资源不存在]名称:' NOT_FOUND',errorCode:' NOT_FOUND' }

如果我使用'Account'代替'PushTopic',我会:

  

描述{actionOverrides:[],         可激活的:假的,         childRelationships:         ...

这是jsforce的问题吗?任何想法都赞赏!

2 个答案:

答案 0 :(得分:4)

确定。问题是我的用户没有PushTopic对象的权限。即使我可以订阅该主题产生的流媒体通道(启用流式api),您还需要其他权限来创建主题。

  

设置 - >管理用户 - >权限集 - >新 - >保存 - >对象设置 - >推送主题 - >编辑

然后

  

管理作业 - >添加作业

我创建了一个名为“PushTopic_Creator”的权限集,只添加了该权限,然后将其应用于我的用户。我现在可以描述和创建PushTopics了!

答案 1 :(得分:-1)

根据此文档,支持的REST调用是:

  

REST:DELETE,GET,PATCH,POST(查询请求在。中指定)   URI)

与此同时,如果您在Workbench中检查样本,则Streaming API配置不需要Salesforce describe()调用。