Nodejs - MongoDB Query - PullRequest
       28

Nodejs - MongoDB Query

2 голосов
/ 03 октября 2019

У меня есть небольшая проблема с моим проектом Thesis.
У меня есть mongodb база данных с примерно 400 тысячами записей в следующем стиле: (я перевел переменные, поэтому, если есть опечатка, извините);

var mongoose = require("mongoose");
var work_schema = new mongoose.Schema({
  worktype: String,
  ordernumber: String,
  art_code: String,
  qta: String,
  number_of_operatos: String,
  1_op_code: String,
  2_op_code: String,
  3_op_code: String,
  4_op_code: String,
  phase: String,
  notes: String,
  continued: String, //just a flag
  date_start: String, // DD-MM-YYYY
  date_end: String,   // DD-MM-YYYY
  time_start: String, //HH:MM:SS
  time_end: String,   //HH:MM:SS
  datainiziopart: String, //this is the date parsed like this YYYYMMDD i needed it for another purpose
  datafinepart: String, //this is the date parsed like this YYYYMMDD i needed it for another purpose
  cronsec: String,
  cronsec1: String,
  cronsec2: String,
  cronsec3: String,
  cronsec4: String,
  cronsec5: String,
  cronsec6: String,
  cronsec7: String,
  operationtimesec: String,
  designtimesec: String,
  totalecausalisec: String,
  ke: String,

  author: {
    id: {
      type: mongoose.Schema.Types.ObjectId,
      ref: "User"
    },
    username: String,
    codicereparto: {
      id: {
        type: mongoose.Schema.Types.ObjectId,
        ref: "Reparti"
      },
      nomereparto: String,
      descrizionereparto: String
    }
  }
});
module.exports = mongoose.model("Work", work_schema);

Как видите, схема совсем не маленькая и имеет более 400 тыс. Записей, мне нужно запросить их при экспорте / показе.
Я использовал функцию limit, чтобы показатьпоследние записи.

Я хочу создать страницу с датчиком для запроса данных или использовать

date_start: String, // DD-MM-YYYY

или используя

datainiziopart // YYYYMMDD наподобие <> =

Можете ли вы помочь мне написать код nodejs для отображения страницы срезультат?

Я использую экспресс, если это может помочь. я пытался сделать это

router.get("/risultati", function(req, res) {
      Request.getAllRequestListingsCb(function (err, docs){
          res.render('pannello/risultati', { rL: docs });
      });
});


router.post("/ricercautente", function(req, res) {
  var data = req.body.filtro;
  var datadivisa = data.split(' - ');

  var datestart= moment(datadivisa[0], 'DD-MM-YYYY').format('DD-MM-YYYY');
  var dateend= moment(datadivisa[1], 'DD-MM-YYYY').format('DD-MM-YYYY');
  //res.redirect("/pannello/utentetutti");
  module.exports.getAllRequestListings = function (callback) {
      var query = {"datainizio": {"$gte": new Date(datainizio), "$lt": new Date(datafine)}};
      Lavori.find(query, callback);
  };
  res.redirect('pannello/risultati');

});


<div class="" align=center>
  <form  action="/ricercautente" method="post">
    <input type="text" name="filtro" id="filtro"  />
    <button class="pure-button pure-button-warning" name="" id="" type="submit">Submit</button>
  </form>
</div

и на другой странице

  <tbody>
      <% lavoritrovati.forEach(function(lavoro){ %>
      <tr>
        <td>          <%=lavoro.author.codicereparto.nomereparto%>        </td>
        <td>          <%=lavoro.tipodilavoro%>        </td>
        <td>          <%=lavoro.ordineproduzione %>        </td>
        <td>          <%=lavoro.codicearticolo %>        </td>
        <td>          <%=lavoro.quantita %>        </td>
        <td>          <%=lavoro.noperatori %>        </td>
        <td>          <%=lavoro.codoperatori%>        </td>
        <td>          <%=lavoro.codoperatori2%>        </td>
        <td>          <%=lavoro.codoperatori3%>        </td>
        <td>          <%=lavoro.codoperatori4%>        </td>
        <td>          <%=lavoro.fase %>        </td>
        <td>          <%=lavoro.note %>        </td>
        <td>          <%=lavoro.datainizio %>        </td>
        <td>          <%=lavoro.timestart %>        </td>
        <td>          <%=lavoro.datafine %>        </td>
        <td>          <%=lavoro.timeend %>        </td>
        <td>          <%=lavoro.continuato %>        </td>
        <td>          <%=lavoro.cronsec %>        </td>
        <td>          <%=lavoro.cronsec1 %>        </td>
        <td>          <%=lavoro.cronsec2 %>        </td>
        <td>          <%=lavoro.cronsec3 %>        </td>
        <td>          <%=lavoro.cronsec4 %>        </td>
        <td>          <%=lavoro.cronsec5 %>        </td>
        <td>          <%=lavoro.cronsec6 %>        </td>
        <td>          <%=lavoro.cronsec7 %>        </td>
        <td>          <%=lavoro.designtimesec %>        </td>
        <td>          <%=lavoro.operationtimesec %>        </td>
        <td>          <%=lavoro.ke %>        </td>
<% }); %>
...