mongodb возвращает неправильный результат в запросе сортировки по дате - PullRequest
0 голосов
/ 31 октября 2018

Я пытаюсь запросить результат, отсортированный в порядке убывания даты. Переменная даты в моем приложении называется approvaldate.

myroute.js

'use strict';
var express = require('express');
var Ad = require('../models/ad.model.js');
var moment = require('moment');
var router = express.Router();

/* GET home page. */
router.get('/', function (req, res) {


    Ad.find({ adstatus: 'approved' }).sort({ approvaldate: -1 }).exec(function (err, approvedads) {
        if (err) {
            console.log(err);
        }

        else {

            approvedads.adsince = moment(approvedads.creationdate).fromNow();
            console.log(approvedads);
            res.render('index', { approvedads: approvedads});
        }


    });



});

module.exports = router;

Ниже приведен результат, который я получаю при выполнении console.log(approvedads);. Обратите внимание на то, что возвращенный результат имеет ad с heading 'МЫ, КОТОРЫЙ ЭТО СДЕЛАЛ' с его approvaldate Пн 29 октября .. как это получилось? Почему этот сорт сломан, я не могу обойти его.

выход одобренных материалов

[ { adstatus: 'approved',
    imgdest: [ 'img1.jpg', 'img2.jpg', 'img1.jpg', 'img2.jpg' ],
    _id: 5bd5f3d2ffc77735b4431db6,
    heading: 'This is so cool man!',
    metal: '22 Carat',
    weight: 233,
    unit: 'kilos',
    opdesc: 'LOL I don\'t know how to code tho!',
    userobjid: 5bccfb7515bc6d0c6872ed91,
    username: 'mesam',
    deliverydate: '',
    creationdate: 'Sun Oct 28 2018 21:37:22 GMT+0400 (Arabian Standard Time)',
    displaydate: '28 October 2018',
    approvaldate: 'Sun Oct 28 2018 21:37:32 GMT+0400 (Arabian Standard Time)',
    __v: 0 },
  { adstatus: 'approved',
    imgdest:
     [ 'http://localhost:3000/images/5bd5f071ffc77735b4431db5/ img1.jpg',
       'http://localhost:3000/images/5bd5f071ffc77735b4431db5/ img2.jpg' ],
    _id: 5bd5f071ffc77735b4431db5,
    heading: 'adwqd',
    metal: '22 Carat',
    weight: 3,
    unit: 'kilos',
    opdesc: 'asd',
    userobjid: 5bccfb7515bc6d0c6872ed91,
    username: 'mesam',
    deliverydate: '',
    creationdate: 'Sun Oct 28 2018 21:22:57 GMT+0400 (Arabian Standard Time)',
    displaydate: '28 October 2018',
    approvaldate: 'Sun Oct 28 2018 21:23:05 GMT+0400 (Arabian Standard Time)',
    __v: 0 },
  { adstatus: 'approved',
    imgdest: [ 'img1.jpg', 'img2.jpg' ],
    _id: 5bd5e81209824946742fdbd7,
    heading: 'wqd',
    metal: '21 Carat',
    weight: 3,
    unit: 'kilos',
    opdesc: 'asd',
    userobjid: 5bccfb7515bc6d0c6872ed91,
    username: 'mesam',
    deliverydate: '',
    creationdate: 'Sun Oct 28 2018 20:47:14 GMT+0400 (Arabian Standard Time)',
    displaydate: '28 October 2018',
    approvaldate: 'Sun Oct 28 2018 20:47:37 GMT+0400 (Arabian Standard Time)',
    __v: 0 },
  { adstatus: 'approved',
    imgdest: [ '/Users/mesam/source/repos/JewelryMP/JewelryMP/public/images/5bd4cb3c7b7563425c2a48e8/img.jpg' ],
    _id: 5bd4cb3c7b7563425c2a48e8,
    heading: 'MAN THIS IS NOW GOD WORKING',
    metal: '21 Carat',
    weight: 323,
    unit: 'kilos',
    opdesc: 'HAHAHA NICE',
    userobjid: 5bccfb7515bc6d0c6872ed91,
    username: 'mesam',
    deliverydate: '2018-10-31',
    creationdate: 'Sun Oct 28 2018 00:31:56 GMT+0400 (Arabian Standard Time)',
    displaydate: '27 October 2018',
    approvaldate: 'Sun Oct 28 2018 00:32:02 GMT+0400 (Arabian Standard Time)',
    __v: 0 },
  { adstatus: 'approved',
    imgdest: [ '/Users/mesam/source/repos/JewelryMP/JewelryMP/public/images/5bd4c9db7b7563425c2a48e7/img.jpg' ],
    _id: 5bd4c9db7b7563425c2a48e7,
    heading: 'sdf',
    metal: '21 Carat',
    weight: 7876,
    unit: 'tons',
    opdesc: 'efwef',
    userobjid: 5bccfb7515bc6d0c6872ed91,
    username: 'mesam',
    deliverydate: '',
    creationdate: 'Sun Oct 28 2018 00:26:03 GMT+0400 (Arabian Standard Time)',
    displaydate: '27 October 2018',
    approvaldate: 'Sun Oct 28 2018 00:27:30 GMT+0400 (Arabian Standard Time)',
    __v: 0 },
  { adstatus: 'approved',
    imgdest: [ '/Users/mesam/source/repos/JewelryMP/JewelryMP/uploads/5bd48e65d600893e9857f115/img.jpg' ],
    _id: 5bd48e65d600893e9857f115,
    heading: 'v',
    metal: '21 Carat',
    weight: 34,
    unit: 'grams',
    opdesc: 'das',
    userobjid: 5bccfb7515bc6d0c6872ed91,
    username: 'mesam',
    deliverydate: '',
    creationdate: 'Sat Oct 27 2018 20:12:21 GMT+0400 (Arabian Standard Time)',
    displaydate: '27 October 2018',
    approvaldate: 'Sat Oct 27 2018 20:16:17 GMT+0400 (Arabian Standard Time)',
    __v: 0 },
  { adstatus: 'approved',
    imgdest: [],
    _id: 5bd63787fde06d407c375c4a,
    heading: 'MAN WE DID IT!',
    metal: '21 Carat',
    weight: 32,
    unit: 'kilos',
    opdesc: 'STILL NO IDEA HOW LOL!',
    userobjid: 5bccfb7515bc6d0c6872ed91,
    username: 'mesam',
    deliverydate: '2018-10-31',
    creationdate: 'Mon Oct 29 2018 02:26:15 GMT+0400 (Arabian Standard Time)',
    displaydate: '28 October 2018',
    approvaldate: 'Mon Oct 29 2018 02:26:50 GMT+0400 (Arabian Standard Time)',
    __v: 0 },
  { adstatus: 'approved',
    imgdest: [],
    _id: 5bccfb9315bc6d0c6872ed92,
    heading: 'Man my DB could be messed up!',
    metal: '18 Carat',
    weight: 2,
    unit: 'grams',
    opdesc: 'Has it been messed up?',
    userobjid: 5bccfb7515bc6d0c6872ed91,
    username: 'mesam',
    deliverydate: '',
    creationdate: 'Mon Oct 22 2018 02:20:03 GMT+0400 (Arabian Standard Time)',
    displaydate: '21 October 2018',
    approvaldate: 'Mon Oct 22 2018 17:48:17 GMT+0400 (Arabian Standard Time)',
    __v: 0 },
  { adstatus: 'approved',
    imgdest: [],
    _id: 5bccfbb115bc6d0c6872ed93,
    heading: 'This is the next post.',
    metal: '21 Carat',
    weight: 2,
    unit: 'grams',
    opdesc: 'Hopefully it works.',
    userobjid: 5bccfb7515bc6d0c6872ed91,
    username: 'mesam',
    deliverydate: '',
    creationdate: 'Mon Oct 22 2018 02:20:33 GMT+0400 (Arabian Standard Time)',
    displaydate: '21 October 2018',
    approvaldate: 'Mon Oct 22 2018 17:48:15 GMT+0400 (Arabian Standard Time)',
    __v: 0 },
  { adstatus: 'approved',
    imgdest: [],
    _id: 5bccfbe615bc6d0c6872ed94,
    heading: 'So could we say large amount of DB',
    metal: '21 Carat',
    weight: 23,
    unit: 'kilos',
    opdesc: 'IS MESSING UP IT\'S SORT FUNCTION?',
    userobjid: 5bccfb7515bc6d0c6872ed91,
    username: 'mesam',
    deliverydate: '',
    creationdate: 'Mon Oct 22 2018 02:21:26 GMT+0400 (Arabian Standard Time)',
    displaydate: '21 October 2018',
    approvaldate: 'Mon Oct 22 2018 17:48:14 GMT+0400 (Arabian Standard Time)',
    __v: 0 },
  adsince: 'a few seconds ago' ]
Deprecation warning: value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.
Arguments:
[0] _isAMomentObject: true, _isUTC: false, _useUTC: false, _l: undefined, _i: Sun Oct 28 2018 21:37:32 GMT+0400 (Arabian Standard Time), _f: undefined, _strict: undefined, _locale: [object Object]
Error
    at Function.createFromInputFallback (C:\Users\mesam\source\repos\JewelryMP\JewelryMP\node_modules\moment\moment.js:320:98)
    at configFromString (C:\Users\mesam\source\repos\JewelryMP\JewelryMP\node_modules\moment\moment.js:2368:15)
    at configFromInput (C:\Users\mesam\source\repos\JewelryMP\JewelryMP\node_modules\moment\moment.js:2594:13)
    at prepareConfig (C:\Users\mesam\source\repos\JewelryMP\JewelryMP\node_modules\moment\moment.js:2577:13)
    at createFromConfig (C:\Users\mesam\source\repos\JewelryMP\JewelryMP\node_modules\moment\moment.js:2544:44)
    at createLocalOrUTC (C:\Users\mesam\source\repos\JewelryMP\JewelryMP\node_modules\moment\moment.js:2631:16)
    at createLocal (C:\Users\mesam\source\repos\JewelryMP\JewelryMP\node_modules\moment\moment.js:2635:16)
    at hooks (C:\Users\mesam\source\repos\JewelryMP\JewelryMP\node_modules\moment\moment.js:12:29)
    at model.dateHelper (C:\Users\mesam\source\repos\JewelryMP\JewelryMP\node_modules\helper-date\index.js:48:15)
    at eval (eval at createFunctionContext (C:\Users\mesam\source\repos\JewelryMP\JewelryMP\node_modules\handlebars\dist\cjs\handlebars\compiler\javascript-compiler.js:254:23), <anonymous>:6:134)
    at prog (C:\Users\mesam\source\repos\JewelryMP\JewelryMP\node_modules\handlebars\dist\cjs\handlebars\runtime.js:221:12)
    at execIteration (C:\Users\mesam\source\repos\JewelryMP\JewelryMP\node_modules\handlebars\dist\cjs\handlebars\helpers\each.js:51:19)
    at Object.<anonymous> (C:\Users\mesam\source\repos\JewelryMP\JewelryMP\node_modules\handlebars\dist\cjs\handlebars\helpers\each.js:61:13)
    at Object.eval (eval at createFunctionContext (C:\Users\mesam\source\repos\JewelryMP\JewelryMP\node_modules\handlebars\dist\cjs\handlebars\compiler\javascript-compiler.js:254:23), <anonymous>:6:31)
    at main (C:\Users\mesam\source\repos\JewelryMP\JewelryMP\node_modules\handlebars\dist\cjs\handlebars\runtime.js:175:32)
    at ret (C:\Users\mesam\source\repos\JewelryMP\JewelryMP\node_modules\handlebars\dist\cjs\handlebars\runtime.js:178:12)

index.handlebars

<div class="container">
    <div class="row">
        <div class="col-md-8 mx-auto">

            {{#each approvedads }}

            <div class="list-group list-group-flush ">

                <div href="#" class="list-group-item flex-column align-items-start borderless indexka">

                    <div class="d-flex h-15 d-inline-block justify-content-between">

                        {{#gt (moment this.approvaldate diff=moment) -21600000}}
                        <h6><span class="badge badge-info">New </span></h6>
                        {{/gt}}
                        <a href="/posts/{{this._id}}" class="mb-1 custom mr-auto">           {{this.heading}}</a>
                        <small class="navbar-text smalldate text-muted">{{moment this.approvaldate fromNow=null }}</small>


                        <!--<small></small>-->
                    </div>
                    <!--<p class="mb-1"> </p>-->
                    <!--<small style="font-style:italic">by</small>-->
                </div>


            </div>
            <br/>
            {{/each}}





        </div>




    </div>



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