2016-07-15 5 views
0

Wenn ich Mongo Befehl verwenden Prompt Daten zu erhalten, es funktioniert gut:Mongo Gibt vollständige Daten während Mongoose nicht relativ Daten zurück

enter image description here

Aber wenn ich es in node.js Mungo tun mit, ich Erhalte keine referenzierten Daten.

Hier ist mein Code:

In Modell:

module.exports.getOrderBysalesOrderId = function(salesOrderId, callback){ 
    Order.find({salesOrderId: salesOrderId}).exec(function(err, order){ 
    if(err) return callback(err, null); 
    callback(null, order); 
    }); 
}; 

In Route:

router.get('/:salesOrderId', function(req, res, next){ 

    var salesOrderId = req.param('salesOrderId'); 

    console.log('order with 1 param is called.'); 

    Order.getOrderBysalesOrderId(salesOrderId, function(err, order) { 
     if (err) { 
      return console.error(err); 
     } else { 
      //respond to both HTML and JSON. JSON responses require 'Accept: application/json;' in the Request Header 
      res.format({ 

       //response in dust or jade files 
       html: function(){ 
        res.render('Order', { 
         title: 'Order', 
         "order" : order 
        }); 
       }, 

       //JSON response will show all orders in JSON format 
       json: function(){ 
        res.json(order); 
       } 
      }); 
     } 
    }); 
}); 

Dann Ajax, ich versuche, die Daten zu erhalten und ausdrucken zu trösten:

$.ajax(
{ 
    type: "GET", 
    url: "/Order/" + orderNo, 
    dataType:"json", 
    async: false, 
    beforeSend: function(jqXHR, settings) 
    { 
     console.log(settings.url); 
    }, 
    success: function(order) 
    { 
     console.log(order); 
     templateData = order; 
    }, 
    error: function(xhr, textStatus, errorThrown) 
    { 
     alert('ajax loading error... ... '+ url + query); 
    } 
}); 

Ausgabe in Consol e:

enter image description here

Update:

Hier ist die Struktur meines Modells:

var mongoose = require('mongoose'); 

var orderSchema = new mongoose.Schema({ 
    salesOrderId: String, 
    orderDate: Date, 
    party: {type: mongoose.Schema.Types.ObjectId, ref:'Party'}, 
    items:[{type: mongoose.Schema.Types.ObjectId, ref:'Item'}, {quantity: Number}, {rate: Number}], 
    dispatches:{ 
    invoiceId: Number, 
    dispatchDate: Date, 
    items: [{type: mongoose.Schema.Types.ObjectId, ref:'Item'}, {quantity: Number}, {rate: Number}] 
    } 
}); 

Update2:

Wenn ich versuche, Daten zu erhalten, füllen mit(), hier ist meine Abfrage:

module.exports.getOrderBysalesOrderId = function(salesOrderId, callback){ 
    Order.find({salesOrderId: salesOrderId}).populate("items").exec(function(err, order){ 
    console.log(order); 
    if(err) return callback(err, null); 
    callback(null, order); 
    }); 
}; 

Hier bekomme ich Fehler:

enter image description here

Update3:

Jetzt habe ich versucht, die unten genannten Code in Modell:

module.exports.getOrderBysalesOrderId = function(salesOrderId, callback){ 
    salesOrderId = mongoose.Types.ObjectId(salesOrderId); 
    Order.find({salesOrderId: salesOrderId}).populate("party").exec(function(err, order){ 
    console.log(order); 
    if(err) return callback(err, null); 
    callback(null, order); 
    }); 
}; 

Hier meine db.js Datei ist:

var mongoose = require('mongoose'); 
mongoose.connect('mongodb://localhost/RateDifferenceDB') 

Jetzt bekomme ich einen anderen Fehler:

enter image description here

ich auch eine URL Fehler in der Konsole des Browsers erhalten:

enter image description here

+0

können Sie console.log Ihre salesOrderId in der route-Datei können Sie wissen, welchen Wert Sie übergeben, weil die Mongo-Abfrage in Ordnung zu sein scheint. –

+0

@AjitejKaushik Ich habe es gerade versucht. Es protokolliert gut. Auch im Bild der Konsole sehen Sie, dass das Objekt das Datum korrekt hat, aber nicht die anderen Felder. – Vishal

+0

@AjitejKaushik Wenn ich einen Auftrag an Console ausspreche, erhalte ich im else-Block der Route ein leeres Array von Elementen sowie Versendungen, wie in der Frage gezeigt. – Vishal

Antwort

1

I schlanke Funktion Ergebnis zu erzielen, sollten erhalten:

module.exports.getOrderBysalesOrderId = function(salesOrderId, callback){ 
    Order.find({salesOrderId: salesOrderId}).lean().exec(function(err, order){ 
    if(err) return callback(err, null); 
    callback(null, order); 
    }); 
}; 
+0

aber Lean gibt Daten in roher Form zurück anstelle Ihres Mungo-Modells, wie auch immer es für Sie arbeitet, das ist großartig !! –

+0

@AjitejKaushik Was meinst du mit roher Form ??? – Vishal

+0

roh wie unformatiert, wie Sie es beim Postboten gesehen haben müssen! –

Verwandte Themen