2016-04-13 18 views
1

...MongoDB'de form araması sorgu giriş metniyle açısal denetleyiciyi kullanarak mongoose ile gerçek zamanlı arama yapmak mümkün mü? Eğik, Düğüm, Express ve birlikte mongodb programlama birisi belki aptal soru için ingilizcem ..ve için üzgün birinci ama Im yeni At

o gerçek zamanlı arama gibi bir şey yapmak mümkün değilse Benim sorum DB'de. Istemci tarafında (açısal + HTML) arama sorgusu yazarken mongoDB'nin eşleştiği sonucu sayfada bir yere (benzer kelime sayısıyla) göstereceğim. Köprüleme için Node ve Ekspres kullanarak Açısal ve MongoDB'de yapmam gerekiyor

Örnek durum: Tarayıcıda bir kelime vb. Yazacağım, pişireceğim ve veri tabanımdaki gibi (pişirme, ocak, pişirme) gibi veriler kaydedilir. .. Ben göstermek istiyorum sonuç Cook ile tablo tüm satır ve bu kadar 3 kelime ile aşçı ile benzer kelime sayısıdır ...

Ne okumak zorunda olduğumu bilmek istiyorum, ve bunun için kullanın

HTML sanırım böyle görünüyor mu? ..:

<form method="post" ng-submit="find()" name="findForm"> 

    <div class="form-group"> 
     <input class="form-control input-lg" type="text" name="word" 
      ng-model="word" placeholder="search from Mongo" > 
    </div> 

    <button type="submit" class="btn btn-lg btn-block btn-success">search 
    </button> 

Ama sonraki ne bilmiyorum ... http sonrası yöntemiyle ya da ne bazı kontrolör ..? ..

angular.module('MyApp') 
.controller('SearchCtrl', ['$scope', '$http', function($scope, $http) { 
    $http.post('/api/search', $scope.word) 
    $scope.search= function() { 
     ({ 
      -----?? 
     }); 
    }; 
}]); 

... işe yaramalı ..? ..Last fonksiyonu benim DB içinde kelime bulmak için fonksiyon uygulamak zorunda olduğu server.js dosyasında olmalıdır.

app.post('/api/search', function(req, res) { 
    Word.find(........) 
// here I dont know how .. 

}); 

biri bana nasıl ... teşekkürler geçmesine bazı tavsiyeler alırsam çok teşekkür olacaktır ..

Biraz var ..if çok net sorunumu açıklamak yoksa üzgünüm Ben ..ask lütfen arıyorum ben ne soru daha ..

TEŞEKKÜRLER ..

cevap

0

Evet bu gerçek zamanlı arama yapmak mümkündür. Kısmi arama için RegExp kullanabilirsiniz. Bu işlemi deneyebilir.

$scope.find = function() { 
     $http.post('/api/search', $scope.word).then(function(response) { 
     $scope.words = response.data; 
     //your code 
     }); 
}; 

ve sunucu tarafında

app.post('/api/search', function(req, res) { 
     var query = {}; 
     //generetae query for partial search 
     query.word = new RegExp(req.body.word, 'i');// assume word is field name for query.word 

     Word.find(query, function(error, words){ 
      if(error) { 
      return res.status(400).send({msg:"error occurred"}); 
      } 
      return res.status(200).send(words); 
     }); 
    }); 

NB: iyi olsun kullanmak size API çağrı denetleyicisi ve bu işlevin bir find işlevini ihtiyaç böylece

Eğer dom içinde ng-submit="find()" kullanılan arama için bir fiile ilişkin bir problem yoksa, sorgulama bilgilerini gösterecek bir problem yok

+0

Teşekkürler ... yönlendirme artık iyi çalışıyor sanırım ama kodunuzu denediğimde geçersiz json ile HTTP Durum 500 hatası oluştu .. sorun nedir bilmiyorum ... :(.. – strakz

+0

modelinizi Sorunuz mu var? –

+0

okey çözüldü problemi içerik türü için post metodu ... ama 2 gün geçirdim: D .. – strakz

0

model? .. modül demek istedin mi? ..

angular.module('SymText') 
    .controller('FreeWrtCtrl', ['$scope', '$http', function ($scope, $http) { 

    $scope.find = function() { 
     $http.post('/api/find',$scope.word) 
      .then(function (response) { 
       $scope.words = response.data; 

     }) 
    } 

}]); 

Ve sunucu js:

app.post('/api/find', function (req, res) { 

var query={}; 
query.word=new RegExp(req.body.word, 'i'); 

//console.log(req.body.word); 
User.find(query, function (err, words) { 
     if (err) return res.status(400).send({msg:" error during search DB"}); 
     console.log(words); 
     return res.status(200).send(words); 

    } 
) 

});

ve Mongo gibi bakmak .. şimdi benim modeli:

var userSchema = new mongoose.Schema({ 
    username: {type: String, unique: true, required: true}, 
    password: {type: String, required: true}, 
    fullname: {type: String, required: true}, 
    role: Number 
}); 

..its değil ana Mongo DB ama bu DB i bazı veriler lazım ...iyi sınamak için ben düşünüyorum .. ve bu benim için sorun olmaz o değil mi? ..