2016-07-09 15 views
0

Ich arbeite an einer MEAN Stack-App mit einer bereits vorhandenen MongoDB-Sammlung und wenn ich Bedingungen für .find() definieren, wurden keine Ergebnisse zurückgegeben, während es ohne Bedingungen funktioniert. HierMongoose .find() mit Bedingungen gibt kein Ergebnis zurück

ist der Code von meiner Modelldatei:

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 

var mainSchema = new Schema({ 
    id: Number, 
    x: Number, 
    y: Number, 
    prio: Number, 
    type0: String, 
    type1: String, 
    type2: String, 
    width: Number, 
    height: Number, 
    text1: String, 
    text2: String, 
    size1: Number, 
    font: String, 
    color1: String, 
    color2: String, 
    links: String, 
    peers: String 
}, { collection: 'main' }); 

mainSchema.statics = { 
    load: function(l, t, r, b, cb){ 
     console.log(l, t, r, b); 
     return this.find({ 
      x: { $gt: l, $lt: r }, 
      y: { $gt: t, $lt: b } 
     }).exec(cb); 
    } 
}; 

module.exports = mongoose.model('main', mainSchema); 

Dies ist ein Objekt aus der Ausgabe ohne Bedingungen:

[ 
    { 
    "_id": "577faf952a7c33f2fe44b282", 
    "id": 4, 
    "x": 50944, 
    "y": 54995, 
    "prio": 1, 
    "type0": "a", 
    "type1": "a", 
    "type2": "a", 
    "width": 100, 
    "height": 100, 
    "text1": "Chemie", 
    "text2": "", 
    "size1": 48, 
    "font": "f1_a ", 
    "color1": "#000000", 
    "color2": "#bfdeff", 
    "links": "14,53445,57328,12,#ff3d3d,k&13,54744,53904,12,#8c8c86,k&12,52557,51870,12,#f2ff12,k&11,51172,49743,12,#2312ff,k&10,48270,47335,12,#49fe6e,k&", 
    "peers": "1" 
    } 
] 

Hier ist der Code, der die Last Methode aufruft:

var mongoose = require('mongoose'); 
var main = require('../models/main'); 

exports.load = function(req, res){ 
    main.load(parseInt(req.query.l), parseInt(req.query.t), parseInt(req.query.r), parseInt(req.query.b), function(err, data) { 
     res.jsonp(data); 
    }); 
}; 
+0

Wo ist der Code, der die Lade-Methode aufruft? – chridam

+0

@chridam Danke für den Hinweis, ich habe den Code hinzugefügt. – Patrick

+0

Ich glaube, dass Sie hier die falsche Modellinstanz aufrufen; anstelle von 'var Main = mongoose.model ('main', 'main', 'main');', warum kann man das tatsächliche Modell nicht als 'var Main = require ('../ models/main') bezeichnen ; 'und stelle sicher, dass du es am Ende in der Datei main.js als' module.exports = mongoose.model ('main', mainSchema); exportierst; '? – chridam

Antwort

0

Problem gelöst! Trotz der Ausgabe wurden alle Daten als Zeichenketten anstelle von int in MongoDB gespeichert. Ich habe gerade die JSON-Ausgabe (wo die Typen korrekt sind) in eine Datei kopiert und in MongoDB importiert, jetzt funktioniert der Code einwandfrei.

Verwandte Themen