very simple question that waste my time for several hours: I just try to push data to an array which exists in my schema but when I use the .push I got error that 'can not read property push of undefined' here is my very simple code:
var mongoose = require("mongoose");
mongoose.connect("mongodb://localhost/new_try1");
var productSchema = new mongoose.Schema({
number: Number,
name: String
});
var Product = mongoose.model("Product", productSchema);
var orderSchema = new mongoose.Schema({
number: Number,
name: String,
products: [productSchema]
});
var Order = mongoose.model("Order", orderSchema);
var newOrder = new Order({
number: "123",
name: "jane"
});
newOrder.save(function (err, order) {
if (err) {
console.log(err);
} else {
console.log(order);
}
});
Order.find({
name: 'jane'
}, function (err, order) {
if (err) {
console.log(err)
} else {
console.log(order);// I can see the products array in cmd
console.log(order.products);// I got undefined here!!!!!????
order.products.push({// here I got error can not read of un....
number:456,
name:'carret'
});
order.save(function(err,found){
if (err){
console.log(err);
}else{
console.log(found);
}
})
}
});
when run the server I got this in cmd for order:
[{_id:357636shgs65dh5sd4h65d,
number:'123',
name:'jane',
__v:0,
products:[] }]
now why order.product is undefined when I can see it here?
orderis an array, so you need to useorder[0].productsmaybe!?