mongodb
  • express
  • mongoose
  • ejs
  • 2015-04-30 6 views 0 likes 
    0

    Я пытаюсь сделать запрос диапазона и показать данные на мой взгляд EJsMongoDB возвращает пустой массив

    EJS View «historicos.ejs»

    <h1>historicos</h1> 
    <form action="/historicos/buscar"> 
        <input type="text" name='inicio' id='inicio'></li> 
        <input type="text" name='final' id='final'></li> 
    
    
        <br> 
        <button type="submit">Buscar</button> 
    </form> 
    
    
    <% if(typeof his !== 'undefined'){ 
    
        his.forEach(function(dati){%> 
    
        <%= dati.temp %> 
        <%= dati.hum %> 
        <%= dati.date %> 
        <br/> 
    
        <%}); 
        }; %> 
    

    Я использую контроллер с 2-мя методами , 1 для отображения страницы и для управления запросом.

    Контроллер "grafi.js"

    var Si = require('../models/sis'); 
    
    exports.getPagehis = function(req, res) { 
        if (req.user) return res.redirect('/'); 
         res.render('historicos'); 
        }; 
    
    exports.getHis= function(req, res, next) { 
    
        ini = req.body.inicio; 
        fin = req.body.final; 
        console.log(ini) 
        console.log(fin) 
    
    
        Si.find({"date": {"$gte":ini, "$lt":fin}},function(err, his) { 
         console.log(his); 
        if(err) return next(err); 
        res.render('historicos', { 
         his:his 
        }); 
        }); 
    
    }; 
    

    и это мой маршрутизатор файл

    router.get('/historicos', hiController.getPagehis); 
    router.get('/historicos/buscar', hiController.getHis); 
    

    , если я пишу вручную ини и плавник, чтобы сделать запрос (используя этот формат YYYY-MM-DDThh : mm), я имею в виду без req.body.inicial и req.body.final, он работает хорошо, но когда я запрашиваю информацию из представления, я получил эти поля без изменений.

    что я могу сделать, чтобы решить эту проблему?

    +0

    Вы подтвердили на сервере, что 'req.body.inicio' и' req.body.final' находятся в том же формате, что и 'YYYY-MM-DDThh: mm', а не закодированы или экранированы? –

    +0

    Да, как я сказал, если я напишу строку в этом формате, она хорошо работает –

    +0

    Это подтверждает, что строка в этом формате работает, но не то, что значения параметра имеют эту форму. Вы либо отлаживали, либо console.log переданные значения? –

    ответ

    0

    проблема была формой и запрос в общем методе добавления = «получить» в форме и обновить контроллер с:

    var Url = require('url'); 
    
    ... 
    
    queryparams = Url.parse(req.url,true).query; 
        ini = queryparams.ini; 
        fi = queryparams.fi; 
    ... make the query to mongo db 
    

    с этим кодом можно получить значение во входных файлах, переданных в url

    Смежные вопросы