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
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:
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:
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:
ich auch eine URL Fehler in der Konsole des Browsers erhalten:
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. –
@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
@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