2017-10-06 1 views
0

MarkLogic 템플릿 기반 추출과 함께 사용할 템플릿을 업로드하려고합니다. 콘솔 (localhost)에서 Javascript를 사용하고 있습니다. 그러나 무엇을 시도하든, 업로드하려고하면 같은 오류가 계속 발생합니다. 오류 : "[javascript] SEC-INVALIDPERM : xdmp : document-insert ...."가능한 모든 권한을 제공했지만 여전히 오류가 계속 발생합니다. 내가 tde.validate([MatchesTDE]);와 템플릿을 확인하면 그런데 Marklogic 템플릿 기반 추출 : 템플릿 삽입

'use strict' 

declareUpdate(); 
var tde = require("/MarkLogic/tde.xqy"); 
var MatchesTDE = xdmp.toJSON(
    { 
    "template": { 
     "context": "/com.marklogic.client.mapper.MatchesDoc", 
     "collections": ["com.marklogic.client.mapper.MatchesDoc"], 
     "rows": [ 
     { 
      "schemaName": "mapper", 
      "viewName": "matches", 
      "columns": [ 
      { 
       "name": "nrOfDocumentsInNC", 
       "scalarType": "long", 
       "val": "nrOfDocumentsInNC" 
      }, 
      { 
       "name": "totalNrOfDocuments", 
       "scalarType": "long", 
       "val": "totalNrOfDocuments" 
      }, 
      { 
       "name": "matchesID", 
       "scalarType": "long", 
       "val": "matchesID" 
      }, 
      { 
       "name": "uniqueInNC", 
       "scalarType": "boolean", 
       "val": "uniqueInNC" 
      } 
      ] 
     } 
     ] 
    } 
    } 
); 

tde.templateInsert(
    "/MatchesDoc/TDE.json" , 
    MatchesTDE, 
    xdmp.defaultPermissions(), 
    ["com.marklogic.client.autorelationmapper.MatchesDoc"] 
); 

, 나는 true를 얻을. 그리고 스크립트를 테스트하면

tde.nodeDataExtract( 
    [cts.doc("com.marklogic.client.mapper.MatchesDoc/2722286.json")], 
    [MatchesTDE] 
); 

이 작동합니다. 또한, TDE에 관한 튜토리얼을 https://developer.marklogic.com/learn/template-driven-extraction에 따라 실행하면 을 제외하고는을 제외한 insertTemplate 함수가 작동합니다. 나는 또한 같은 오류가 발생합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+0

MarkLogic의 버전은 무엇입니까? – Tamas

+0

또한이 쿼리를 실행하는 사용자에게 'tde-admin'역할을 추가했는지 확인하십시오. – Tamas

+0

MarkLogic 9.0을 사용하고 있습니다. 그리고 예, 'tde-admin'역할을 추가했습니다. – sjoerd999

답변

0

이 코드를 실행하는 사용자의 모든 사용 권한을 제거하십시오. 또는 빈 세번째 인수와 함께 tde.templateInsert()를 실행 해보십시오 : 사용자가 권한이없는

I gave myself all the permissions that are possible, but I still keep getting the error.

, 문서 권한이 :이 같은 소리

tde.templateInsert(
    "/MatchesDoc/TDE.json" , 
    MatchesTDE, 
    [], 
    ["com.marklogic.client.autorelationmapper.MatchesDoc"] 
); 

가 문제입니다. 사용자는 문서를 작성하는 경우에만 기본 권한을 갖습니다.

사용자의 기본 사용 권한은 사용자가 삽입 한 문서에 할당되는 사용 권한 집합입니다. 기본 사용 권한 에 해당 사용자에게 데이터베이스의 추가 권한을 부여하지 마십시오. 일반적으로 관리자에게는 할당 된 기본 권한이 없습니다.

사용자에게 모든 기본 사용 권한을 할당하면 xdmp.defaultPermissions()을 전달하는 tde.templateInsert()의 3 번째 인수에 큰 권한 목록이 추가됩니다. 이들 중 적어도 하나는 유효하지 않으므로 SEC-INVALIDPERM 오류가 발생합니다.

+0

모두 시도해보십시오. 궁극적으로, 내 문제를 해결 한 것은 모든 데이터를 완전히 다시 설치하고 제거하는 것이 었습니다. 자, 모든 것이 매력처럼 작동합니다. – sjoerd999