2017-03-24 7 views
1

ジョブAPIを作成しました。スキルと場所で検索機能を作りたいと思います。例:スキルHTML、CSS、JavaScriptを使用して特定の場所で検索すると、クエリに一致するジョブのリストが表示されます。さまざまなパラメータでmongooseで検索クエリを実行する方法は?

JSONデータ:

{ 
    "jobID": 1245, 
    "title": "Front-End Developer", 
    "description": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus." 
    "Skills": "JavaScript, jQuery, Angular.js, React.js, Ember.js", 

}, 
{ 
    "jobID": 2982, 
    "title": "Back-End Developer", 
    "description": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus." 
    "Skills": "JavaScript, Node.js, Express.js, MongoDB" 
}, 
{ 
    "jobID": 5782, 
    "title": "Full-Stack Developer", 
    "description": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus." 
    "Skills": "JavaScript, jQuery, Angular.js, backbone.js" 
}, 
{ 
    "jobID": 4674, 
    "title": "Java Developer", 
    "description": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus." 
    "Skills": "Java, J2EE, JSON, JBOSS, Spring, Hibernate" 
}, 
{ 
    "jobID": 1589, 
    "title": "Hadoop Developer", 
    "description": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus." 
    "Skills": Hadoop, Spark, Teradata, Scala, Oozie, Java, etc." 
} 

{ "ジョブID":1245、 "タイトル": "フロントエンド開発者"、 "説明":「Loremのイプサム悲しみは、AMET consectetuerのadipiscingのELIT座ります。 Aeneanコモディティ・リューラ・エクストラ・ドゥーラ。Aeneanマッサ。Cum sociis natoque penatibusとmagnis dis parturient montes、nascetur ridiculus mus。 "スキル": "はJavaScript、jQueryの、Angular.js、React.js、Ember.js"、 "場所":インド }、{ "ジョブID":2982、 "タイトル":「バックエンドデベロッパー "、 " description ":" Lorem ipsum dolor sit amet、consectetuer adipiscing elit。Aeneanコモディティ・リュウラ・ゲット・ア・エー・ダラー。Aenean massa。Cum sociis natoque penatibus et magnis dis parturient montes、nascetur ridiculus mus。 "スキル": "はJavaScript、Node.jsの、Express.js、MongoDBの" "場所":USA }、{ "ジョブID":5782、 "タイトル": "フルスタックの開発"、 "description": "Lorem ipsum dolle sitet、consectetuer adipiscing elit。Aeneanコモディティ・リュウラ・エッゲ・ドゥーラ。Aenean massa。Cum sociis natque penatibusとmagnis dis parturient montes、nascetur ridiculus mus。 "スキル": "JavaScriptを、jQueryの、Angular.js、BACKBONE.JS"、 "場所":UK }、{ "ジョブID":4674、 "タイトル": "Java開発"、 「の説明":" Lorem ipsum dolle sitet、consectetuer adipiscing elit。Aeneanコモディティ・リュウラ・エゲット・ダラー。Aenean massa。Cum sociis natque penatibusとmagnis dis parturient montes、nascetur ridiculus mus。 "スキル": "ジャワ、J2EE、JSON、JBOSS、春は、Hibernate"、 "場所":ロシア }、 { "ジョブID":1589、 "タイトル": "Hadoopの開発"、 「の説明":" Lorem ipsum dolle sitet、consectetuer adipiscing elit。Aeneanコモディティ・リュウラ・エゲット・ダラー。Aenean massa。Cum sociis natque penatibusとmagnis dis parturient montes、nascetur ridiculus mus。 "スキル":Hadoopの、スパーク、テラ、スカラ、Oozie、Java(登録商標)、等 "、 "場所":中国 }

Route.jsが

'use strict'; 
var express = require('express'), 
    router = express.Router(), 
    search = require('../controllers/search'); 

Router.get('/:query', search.get); 

module.exports = router; 

Search.jsは

ファイルファイル
'use strict'; 
var mongoose = require('mongoose'), 
    Jobs = mongoose.model('Jobs'); 

var search = { 

    get: function (req, res) { 
     var searchQuery = req.params.query; 

     Jobs.findOne({search : searchQuery}, function(err, result) { 
      if (err) throw err; 
      console.log(result); 
      res.json(result); 
     }); 
    } 

}; 

module.exports = search; 

Server.js

'use strict'; 
var express = require('express'), 
    app = express(); 

//Routes 
var jobRoute = require('./routes/router'); 
app.use('/api/jobs', jobRoute); 

//Search Routes 
var searchRoute = require('./routes/search-route'); 
app.use('/api/search', searchRoute); 

//Server Connection 
app.listen(port, function() { 
    console.log('Listening on port 8080!'); 

答えて

0

私は[]のデータで空の配列を取得していますこのような方法で合格した場合は、この

Jobs.find({skill: "html",location:"US"}, function(err, user) 
{ 
    if (err) 
    { 
     res.send(err); 
    } 
    } 


}); 
+0

私はどのようにルータのパラメータを渡す必要がありますか? – Arjun

+0

申し訳ありませんが、あなたの質問を得る。 – Harsheet

+0

Route.jsファイルとsearch.jsファイルに正しいコードがありますか?それはそれを書く正しい方法ですか? – Arjun

0

が海を作るために、ファイルRCH複数のパラメータを指定して、あなたは$inパラメータは引数として配列を受け取り、アレイ上のフィールドのいずれかが含まれているすべての文書を返しますコンマ

Jobs.find({location:"wherever",skills:{$in:["Java","Javascript"]}}, function(err, data) { 
    //your code 
} 

ことによってそれを分離することができます。

+0

を試すことができます。 – Arjun

+0

データベース内のあなたのコレクションの名前は何ですか?大文字と小文字を区別してください –

+0

大文字と小文字が区別されるため、問題が見つかりました。 – Arjun

関連する問題