#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');