moongose: считывание данных из mongodb с помощью nodejs

#node.js #mongodb

#node.js #mongodb

Вопрос:

Я использую nodejs и moongose для работы с базой данных mongodb. Мне нужно прочитать информацию в основном, поле _id, чтобы получить временную метку и поле temp, один пример записи:

Пример записи Mongodb

 { _id: 57fe867e473a802218a891e0,
    _etag: 57fe867e225e107c6f47dc55,
    temp: 27875,
    coord: [ [Object] ] }
  

Я использую следующий код для выполнения чтения:

Чтение кода

 var mongoose = require('mongoose');
var Schema   = mongoose.Schema;
ObjectID = require('mongodb').ObjectID;
var configDB = require('./config/database.js');
mongoose.connect(configDB.url);

mongoose.model('Temperatura',
               new Schema({ time: Number, temperature: Number}),
               'col');

var dados = mongoose.model('Temperatura');

        dados.find({}, function(err, data)
        {
                if(err){
                        console.log(err, data, data.length);
                }else{
                        console.log(data);
                }

                var Time = [];
                var Temperature = [];
                var Grafico = [];


                for ( index in data){

                  var doc = data[index];
                  var objectId = new ObjectID(doc['_id'])
                  var time = objectId.getTimestamp();
                  console.log(doc['temp']);
                  var temperature = doc['temp'];

                  Temperature.push({"value" : temperature});
                  Time.push({"value" : time});

                  }
}).sort('-date').limit(100);
  

Основная проблема заключается в том, что только Time массив имеет значения, Temperature массив представляет неопределенные значения, в чем ошибка кода?

Ответ №1:

Ваша модель mongoose должна соответствовать фактическим данным в записи mongodb. Попробуйте добавить временное поле в вашу модель:

 mongoose.model('Temperatura',
           new Schema({ time: Number, temp: Number}),
           'col');