получение данных из динамической схемы - PullRequest
1 голос
/ 20 марта 2012

Я использую mongoose / nodejs для получения данных как json от mongodb. Для использования mongoose мне нужно сначала определить схему следующим образом:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var GPSDataSchema = new Schema({
    createdAt: { type: Date, default: Date.now }
    ,speed: {type: String, trim: true}
    ,battery: { type: String, trim: true }
});

var GPSData = mongoose.model('GPSData', GPSDataSchema);
mongoose.connect('mongodb://localhost/gpsdatabase');
var db = mongoose.connection;
db.on('open', function() {
    console.log('DB Started');
});

тогда в коде я могу получить данные из БД, как

GPSData.find({"createdAt" : { $gte : dateStr, $lte:  nextDate }}, function(err, data) {

            res.writeHead(200, {
                    "Content-Type": "application/json",
                    "Access-Control-Allow-Origin": "*"
            });
            var body = JSON.stringify(data);
            res.end(body);
        });

Как определить схему для сложных данных, подобных этой, вы можете увидеть, что подраздел может перейти на любой более глубокий уровень.

[
  {
    'title': 'Some Title',
    'subSection': [{
       'title': 'Inner1',
       'subSection': [
          {'titile': 'test', 'url': 'ab/cd'} 
        ]
    }]
  },
  ..
]

1 Ответ

1 голос
/ 20 марта 2012

С Мангустская документация :

var Comment = new Schema({
    body  : String
  , date  : Date
});

var Post = new Schema({
    title     : String
  , comments  : [Comment]
});

Обратите внимание, как Comment определяется как Schema, а затем указывается в массиве Post.comments

Ваш случай немного отличается: у вас есть самоссылающаяся схема, которую я не пробовал, но она будет выглядеть примерно так:

var sectionSchema = new Schema({
  title: String
  ,subSections: [sectionSchema]
});

mongoose.model('Section', sectionSchema);

Тогда вы можете добавить подразделы так:

var section = new mongoose.model('Section');
section.subSections.push({title:'My First Subsection'})

Дайте мне знать, как это работает.

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