2017-05-08 68 views
0

我正在嘗試將我的MongoDB映射到WSO2 DSS。但是生成的服務存在錯誤,並且在數據映射方面出現很多錯誤。爲什麼我得到WSO2 DSS映射問題?

這裏是我的嘗試:

<data name="MongoDB" transports="http https local"> 
    <config enableOData="false" id="mongodb"> 
     <property name="mongoDB_servers">127.0.0.1:27017</property> 
     <property name="mongoDB_database">domain_with_email</property> 
     <property name="mongoDB_write_concern">NONE</property> 
     <property name="mongoDB_read_preference">PRIMARY</property> 
    </config> 
    <query id="search" useConfig="mongodb"> 
     <expression>domainemail.find({"domain":#})</expression> 
     <result escapeNonPrintableChar="true" outputType="json" useColumnNumbers="true">{&#xd;"entries":&#xd;{&#xd;"id":"$_id",&#xd;"domain":"$domain",&#xd;"emails":[&#xd; {&#xd; "email":"$email"&#xd; }&#xd;]&#xd;}&#xd;}</result> 
     <param defaultValue="yahoo.com" name="domain" sqlType="STRING"/> 
    </query> 
    <operation name="search"> 
     <call-query href="search"> 
     <with-param name="domain" query-param="domain"/> 
     </call-query> 
    </operation> 
</data> 

這裏是錯誤:

https://gist.github.com/JafferWilson/b4aa22c39205d61a25f2bee5b45a7607

請讓我知道我需要做的,使用WSO2我的MongoDB獲得JSON輸出DSS?

回答

1

我們仍然在爲我們的WSO2 + Mongo旅程而苦苦掙扎。無論如何,我希望這可以幫助。下面是我們的工作JSON服務代碼的MongoDB

<data name="MongoTestDS2" transports="http https local"> 
    <config enableOData="false" id="MongoDS"> 
     <property name="mongoDB_servers">xx.xx.xx.xx</property> 
     <property name="mongoDB_database">mydb</property> 
    </config> 
    <query id="GetTestVals" useConfig="MongoDS"> 
     <expression>things.find()</expression> 
     <result element="Documents" rowName="Document" useColumnNumbers="true"> 
     <element column="document" export="id" name="Data" xsdType="string"/> 
     </result> 
    </query> 
    <query id="InsertTestVals" returnUpdatedRowCount="true" useConfig="MongoDS"> 
     <expression>things.insert("{id:#, name:#}")</expression> 
     <result element="UpdatedRowCount" rowName="" useColumnNumbers="true"> 
     <element column="1" name="Value" xsdType="integer"/> 
     </result> 
     <param name="id" sqlType="STRING"/> 
     <param name="name" sqlType="STRING"/> 
    </query> 
    <query id="GetValsJson" useConfig="MongoDS"> 
     <expression>things.find()</expression> 
     <result outputType="json">{&#xd; "Documents": {&#xd; "Document": [&#xd; {&#xd; "Data": "$document"&#xd; }&#xd; ]&#xd; }&#xd;}</result> 
    </query> 
    <operation name="GetThings"> 
     <description>Test Mongo DB                 &#xd;         </description> 
     <call-query href="GetTestVals"/> 
    </operation> 
    <operation name="PutThings"> 
     <call-query href="InsertTestVals"> 
     <with-param name="id" query-param="id"/> 
     <with-param name="name" query-param="name"/> 
     </call-query> 
    </operation> 
    <operation name="GetThingsJson"> 
     <call-query href="GetValsJson"/> 
    </operation> 
</data> 

在你的情況,我認爲,這是該行需要改變:

<query id="GetValsJson" useConfig="MongoDS"> 
     <expression>things.find()</expression> 
     <result outputType="json">{&#xd; "Documents": {&#xd; "Document": [&#xd; {&#xd; "Data": "$document"&#xd; }&#xd; ]&#xd; }&#xd;}</result> 
</query> 

這將返回所有字段爲字符串。

如果這則涉及到你剛纔的問題,那麼我認爲這個教程將與測繪領域從一個服務到另一個下一步驟的幫助: https://docs.wso2.com/display/EI611/Transforming+Message+Content

在我們身邊,我們遺憾的是放棄了對mongodb適配器,附帶WSO2並使用RESTHeart將mongodb作爲API公開(http://restheart.org/)這看起來很好,因爲WSO2只是像使用其他REST API一樣使用它們。

我們很樂意聽取您的意見,因爲我確信我們會在我們自己的mongodb + WSO2測試中遇到許多相同的挑戰。

+0

有沒有辦法,我可以按照我的問題示例中分類的方式顯示文檔。說像電子郵件與電子郵件標籤和域名與域標籤等,你不覺得該文件會給我一個完整的文件JSON,這是我想我想顯示輸出的類別。 –