Я создал Jobs API, и теперь я хочу сделать поиск с помощью навыков и местоположения. Например, если я выполняю поиск по навыкам HTML, CSS, JavaScript и по определенному местоположению, то должен отобразиться список заданий, соответствующих запросу.

Данные 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."
}

{"jobID": 1245, "title": "Front-End Developer", "description": "Lorem ipsum dolor sit amet, consittetuer adipiscing elit. Aenean commodo ligula eget dolor. Энеанская масса". montes, nascetur ridiculus mus. " "Навыки": "JavaScript, jQuery, Angular.js, React.js, Ember.js", "location": India}, {"jobID": 2982, "title": "Back-End Developer", "description" : "Lorem ipsum dolor sit amet, consitteer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus." "Навыки": "JavaScript, Node.js, Express.js, MongoDB", "location": USA}, {"jobID": 5782, "title": "Разработчик полного стека", "description": "Lorem ipsum Dolor Sit Amet, Conceteteer Adipiscing Elit. Aenean Commodo ligula Eget Dolor. Aenean Massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. " "Навыки": "JavaScript, jQuery, Angular.js, backbone.js", "location": UK}, {"jobID": 4674, "title": "Java Developer", "description": "Lorem ipsum dolor sit Amet, Conceteteer Adipiscing Elit. Aenean Commodo ligula Eget Dolor. Aenean Massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. " "Навыки": "Java, J2EE, JSON, JBOSS, Spring, Hibernate", "location": Russia}, {"jobID": 1589, "title": "Hadoop Developer", "description": "Lorem ipsum dolor sit Amet, Conceteteer Adipiscing Elit. Aenean Commodo ligula Eget Dolor. Aenean Massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. " «Навыки»: Hadoop, Spark, Teradata, Scala, Oozie, Java и т. Д. »,« Location »: Китай}

Файл 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!');
1
Arjun 24 Мар 2017 в 06:20

2 ответа

Лучший ответ

Вы можете попробовать это

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


 });
0
Harsheet 24 Мар 2017 в 03:31

Чтобы выполнить поиск с несколькими параметрами, вы можете разделить его запятой

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

Параметр $in принимает массив в качестве аргумента и возвращает все документы, которые содержат одно из полей в массиве.

0
Israel Zinc 24 Мар 2017 в 03:24