2012-03-20 4 views
1

J'utilise mongoose/nodejs pour obtenir des données en tant que json depuis mongodb. Pour l'utilisation mangouste je dois définir le schéma d'abord comme ceObtention de données à partir du schéma dynamique

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

puis dans le code que je peux obtenir des données de db comme

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); 
     }); 

Comment définir schéma pour un ensemble de données complexes comme celui-ci, vous pouvez voir que subSection peut aller à n'importe quel niveau plus profond.

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

Je ne suis pas très familier avec Mongoose, mais ce sujet peut vous intéresser: https://groups.google.com/forum/?fromgroups#!topic/mongoose-orm/0yUVXNyprx8. – Ren

Répondre

1

De the Mongoose documentation:

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

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

Remarquez comment Comment est défini comme un Schema, puis référencé dans le tableau Post.comments

Votre cas est un peu différent: vous avez une auto-référencement Schéma que je n'ai pas essayé mais il ressemblerait à ceci:

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

mongoose.model('Section', sectionSchema); 

Ensuite, vous pouvez ajouter PARAGRAPHES comme ceci:

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

Permettez-moi savoir comment cela fonctionne.

Questions connexes