2016-08-12 85 views
1

我想在我的MEANJS應用程序中使用$和。我在我的服務中使用$ resource來獲取所有查詢參數,並且想要執行AND操作。我的服務是這樣的:

//Words service used to communicate Words REST endpoints 
(function() { 
    'use strict'; 

    angular 
    .module('words') 
    .factory('querywordsService', querywordsService); 

    querywordsService.$inject = ['$resource']; 

    function querywordsService($resource) { 

    var wordsData = $resource('/api/words/?syllableCount=:count&syllableStructur=:struct&frequency=:freq&emphasis=:emph', 
    { count: '@count', struct: '@struct', freq: '@freq', emph: '@emph' }, 
     { 
     update: { 
      method: 'PUT' 
     } 
     }); 

    return { 
     wordsData: wordsData 
    }; 
    } 
})(); 

在我的Ctrl鍵我使用的功能設置@count和其他參數來構建查詢我所需要的。我想要完成的是爲@count和其他人提供多個值。我可能在前端,或者我需要在後端執行它(如果是這樣,你能指出我在哪裏開始的正確方向?)

+0

要澄清更多,我需要在我的控制器中做這樣的事情,有沒有辦法去做到這一點? 'db.words.find({$ and:[{$ or:[{syllableCount:1},{syllableCount:2}]},{$或:[{syllableStructur:「einfach」},{syllableStructur:「komplex」 }]}]})' – d8ta

回答

1

您只需要操作者mongoosein您案件。

比方說,你想得到的結果,其中syllableCount = 12syllableStructur = einfachkomplex

​​

從您的前端,你會通過這些變量可能值的數組。然後,只需更改[1, 2]['einfach', 'komplex']從我的示例req.body.syllableCount或任何其他名稱。

+0

這是我的好東西,我不知道這一點,甚至在看過貓鼬的紀錄片後。也許我只是想念它。感謝那。我會盡力回來報道! – d8ta

+0

這是行得通的,如果我硬編碼它,它會在我的前端顯示AND/OR查詢結果。所以我現在將它更改爲變量,查詢應該工作!非常感謝你,我想你救了我的一週^^ – d8ta

-1

如果您使用MEAN堆棧(您需要應用Mongoose & Express),我會推薦一個非常強大的庫 - express-restify-mongoose。請點擊鏈接使用它。將這個庫應用到您的項目中後,它會自動生成RESTful URL webservice,以便您通過HTTP請求在mongoDB中CRUD數據。

你申請快遞-的RESTify,貓鼬後,您可以使用另一個庫 - request,並按照這個例子來查詢的MongoDB以$標準:

var url = 'http://localhost:7100'; 

// Here is the $and query 
var qs = { 
    query: JSON.stringify({ 
     $and: [ 
      {name: 'Tom'}, 
      {age: {$gt: 20}} 
     ] 
    }) 
}; 


request.get({ 
    baseUrl: url, 
    url: '/api/v1/MyModels', // URL is generated by express-restify-mongoose 
    qs: qs, 
    json: true 
}, function (error, response, body) { 
    if (!error && (response.statusCode == 200)) { 
     console.log(body.length); 
     console.log(body); 
    } else { 
     console.log(error); 
    } 
}); 
+0

是的,我使用MEANJS和yeoman生成器。我只是安裝了express-restify-mongoose,但我不確定要把什麼放到我的app.js中,因爲它已經由生成器設置。任何人都使用這與MEANJS yeoman發電機? – d8ta

+1

我認爲這個答案通過添加更多的第三方庫增加了不必要的複雜性 –