Экспресс-узел js сортирует объекты схемы в маршруте - PullRequest
0 голосов
/ 28 января 2019

Я создал приложение с Node js Express, и мне нужно знать, как сортировать объект схемы в контроллере маршрута.Моя база данных - Mongo db.Вот мой текущий рабочий код.

import express from 'express';
import cors from 'cors';
import bodyParser from 'body-parser';
import mongoose from 'mongoose';
import License from './models/license'

const app = express();
const router = express.Router();
app.use(cors());
app.use(bodyParser.json());
mongoose.connect('mongodb://localhost/tnod');

const connection = mongoose.connection;
connection.once('open', () => {
    console.log('MongoDB database connection established successfully!');
});
app.use('/', router);

router.route('/license').get((req, res) => {
    License.find((err, licenses) => {
        if(err)
            console.log(err);
        else
            res.json(licenses);
    });
});

Мне нужно что-то вроде License.sort({"votes":1}).find() ... Пробовал по-разному.Не работает!

Каким-то образом мне нужно отсортировать объект схемы, заданный /license route

Ответы [ 2 ]

0 голосов
/ 28 января 2019

В следующих примерах возвращаются все документы в коллекции с именем Лицензия , отсортированные по полю голос в порядке возрастания.Укажите значение orderby отрицательного для сортировки в по убыванию или положительное значение (например, 1) для сортировки по по возрастанию по порядку .

 License
  .find()
  .orderby({"votes":1})
  then(response => {
   console.log(response);
   })
   .catch(error => {
   console.log(error);
    });
0 голосов
/ 28 января 2019

К сожалению, find () не возвращает функцию обратного вызова, как вы сделали

License.find((err, licenses) => {})

В Mongoose сортировку можно выполнить любым из следующих способов:

License.find({}).sort('votes').exec((err, licenses) => { ... });
License.find({}).sort([['votes', 1]]).exec((err, licenses) => { ... });
License.find({}).sort({votes: 1}).exec((err, licenses) => { ... });
License.find({}, null, {sort: {votes: 1}}, (err, licenses) => { ... });

Существует специальный синтаксис для более удобной работы с обещаниями, который называется «async / await».

const licenses = await License.find({}).sort({'votes': 1})

Для запуска, который вам нужно сделать асинхронным в вашем коде

router.route('/license').get(async(req, res) => {
    try{
        const licenses = await License.find({}).sort({'votes': 1})
        res.json(licenses);
    } catch(e) {
      console.log('error:-', e)
    }
}}

Наиболее важные License.find({ //pass condition to filter your data })

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...