2017-05-18 2 views
1

Mein Mungo Schema Mungo:Parse json Schema

const BillSchema = new Schema({ 
    fromDate: { type: Date, default: Date.now }, 
    toDate: { type: Date, default: Date.now }, 
    phoneNumber: { type: String }, 
    created: { type: Date}, 
    user: { type: Schema.ObjectId, ref: 'User' }, 
    billDetail: [{ type: Schema.Types.ObjectId, ref: 'BillDetail' }] 
}); 
const BilldetailSchema = new Schema({ 
    amount: { type: Number }, 
    item: { type: Schema.ObjectId, ref: 'Item' }, 
    created: { type: Date, default: Date.now }, 
    user: { type: Schema.ObjectId, ref: 'User' } 
}); 
const ItemSchema = new Schema({ 
    name: { type: String}, 
    code: { type: String}, 
    amount: { type: Number }, 
    created: { type: Date, default: Date.now }, 
    user: { type: Schema.ObjectId, ref: 'User' } 
}); 

Mein Json von Client erhalten

{ billDetail: [ { item: [Object], amount: 1, rentalPrice: 11, rentalDays: 1 } ], 
    code: '000001', 
    customerName: 'steve', 
    phoneNumber: '959494949', 
    fromDate: '2017-05-07T17:00:00.000Z', 
    toDate: '2017-05-18T17:00:00.000Z' } 

Wie kann ich JSON-String oben auf Rechnung Objekt analysieren? Ich versuche, diesen Code zu verwenden:

let bill = new Bill(req.body); 

aber es funktioniert nicht, es ist nur Rechnung zurückkehren, aber nicht billdetails.

Antwort

1

billDetail sollte ein Array von IDs sein, nicht die Objekte.

Sie können die Rechnungsdetails zuerst eingeben, ihre IDs abrufen und sie dann an ein neues billDetail-Array senden.

BillDetail.insertMany(req.body.billDetail) 
    .then(function(billDetails) { 
     const billDetail = billDetails.map(billDetail => billDetail._id); 
     const billData = Object.assign({}, req.body, { billDetail }); 
     const bill = new Bill(billData); 
    }) 
    .catch(function(err) { 
     // error handling here 
    }); 
+0

es funktioniert: D Danke so viel, Und was Artikel, habe ich bereits erstellt es, so, wenn ich Objekt vom Client senden, ich habe nur _id um billDetail zu schieben, nicht wahr? –

+0

'item' muss eine ID sein, einfacher, wenn Sie es vom Client übergeben –