Javascript 在SuiteRM错误40中加入子查询(“名称”:“访问被拒绝”、“编号”:40、“说明”:“您没有访问权”)

Javascript 在SuiteRM错误40中加入子查询(“名称”:“访问被拒绝”、“编号”:40、“说明”:“您没有访问权”),javascript,sugarcrm,suitecrm,Javascript,Sugarcrm,Suitecrm,使用与sugarCRM连接的suiteCRM查询,我需要检索具有特定用户和客户id的所有Opportunity,即不可查询的客户id(帐户id)(至少直接查询) 这意味着我不能使用这样的语法: session: await CRMAuth.getSession(), modules: CRM_MODULES.OPPORTUNITY, query: `assigned_user_id = '${uid}' AND account_id = '${client_id}'`, order

使用与sugarCRM连接的suiteCRM查询,我需要检索具有特定用户和客户id的所有Opportunity,即不可查询的客户id(帐户id)(至少直接查询)

这意味着我不能使用这样的语法:

 session: await CRMAuth.getSession(),
  modules: CRM_MODULES.OPPORTUNITY,
  query: `assigned_user_id = '${uid}' AND account_id = '${client_id}'`,
  order_by: 'date_modified DESC',
  offset: 0,
  select_fields: [
    'id',
    'name',
  ],
  link_name_to_fields_array: [],
  max_results: 100,
  deleted: false,
但是我应该用这样的查询:

  session: await CRMAuth.getSession(),
  modules: CRM_MODULES.OPPORTUNITY,
  query: `opportunities.assigned_user_id = '${uid}' AND opportunities.id IN (
          SELECT opportunity_id FROM accounts_opportunities r
          JOIN accounts a ON (r.account_id = a.id)
          WHERE a.id = '${account_id}'
          AND r.deleted=0 and a.deleted=0)`,
  order_by: 'date_modified DESC',
  offset: 0,
  select_fields: [
     'id',
     'name',
  ],
  link_name_to_fields_array: [],
最大结果:100, 删除:false

我尝试了不同的变体,比如模块/表名称中的大写字母,并像以前一样添加了“r”、“a”(甚至我用全名替换了它们)。我还尝试了更简单的查询,但仍然出现相同的错误

此外,我还可以确定类似的问题不是会话问题,而是语法问题。

我的两个错误是:

  • 将模块倒置
  • 使用get\u entry\u list方法而不是get\u关系(此方法要求不同的参数)

所以我最终得到了这个结构

let response = await CRM(CRM_METHODS.GET_RELATIONSHIPS, {
  session: await CRMAuth.getSession(),
  module_name: CRM_MODULES.ACCOUNTS,
  module_id: '${client_id}',
  link_field_name: `opportunities`,
  related_module_query:`opportunities.assigned_user_id = '${uid}'`,
  related_fields: [*the fields i want*],
  related_module_link_name_to_fields_array:[],
  deleted: 0,
});
小心:模块没有id(机会、帐户等),“模块id”字段是您正在处理的记录的id,在我的情况下是我客户的id

这为我带来了特定用户为特定客户创造的所有机会