铸造到数组失败与moongoose和字典

我有一个问题,在MongoDB中插入数据与mongoose

这是我的db.js模型:

var Appointment = new Schema({ date: Date, coach: ObjectId, complement: String, isOwner: Boolean, fiter : ObjectId, fiters: [ { user: ObjectId, isOwner: Boolean, status: String, invitationDate: Date } ], place: ObjectId, objectif : ObjectId, pricing: Number, status: String, ratings: [ { date: Date, user: ObjectId, score: Number, comment: String, target: ObjectId, targetType: String } ], annulation : Boolean, late: Number, log: [{ logType: String, date: Date, user: ObjectId, details: String, relatedTo: ObjectId }] }, { timestamps: true }); 

这是我的Python脚本testing:

 appointment = { "_id":idFiter, "date": "2016-09-25T00:00:00.0000000Z", "coach":"57dfd22f7f8effc700bfa16f", "fiters" : [ { "user": "57da891db39797707093c6e1", "isOwner": False, "status": "invite", "invitationDate": "2016-09-25T00:00:00.0000000Z", }], "place" : "57d66a5b73c0ab6c007beb74", "objectif": "57e28b64cae2161f33b641e3", } r = requests.post("http://127.0.0.1:8010/appointment/", data=appointment,headers=headers) print(r.status_code) print(r.content) 

这里是我在nodejs中用express的input点:

 router.post('/', authenticate.passport.authenticate('bearer', { session: false }), function(req, res) { appointmentToInsert = { date : req.body.date, coach : req.body.coach, fiter : req.body._id, fiters : req.body.fiters, place : req.body.place, objectif : req.body.objectif, isOwner : true, }; new Appointment(appointmentToInsert).save(function (error, appointment) { if (error == null) { res.status(200).send(appointment); } else { console.log(error); res.status(500).send(error); } }); }); 

这是错误:

 { [ValidationError: Appointment validation failed] message: 'Appointment validation failed', name: 'ValidationError', errors: { fiters: { [CastError: Cast to Array failed for value "[ 'status', 'isOwner', 'invitationDate', 'user' ]" at path "fiters"] message: 'Cast to Array failed for value "[ \'status\', \'isOwner\', \'invitationDate\', \'user\' ]" at path "fiters"', name: 'CastError', kind: 'Array', value: [Object], path: 'fiters', reason: [Object] } } } 

所以这个错误似乎来自滴滴涕领域,但我不明白为什么如果有人有任何线索。

感谢致敬

你的Python脚本只发送字典的密钥,尝试添加.items()发送2元组。 我不确定你的ORM期望的格式。

如果这不起作用,JSON也可以用来通过POST传递复杂的结构。

答案是发送json而不是数据:

 appointment = { "_id":idFiter, "date": "2016-09-25T00:00:00.0000000Z", "coach":"57dfd22f7f8effc700bfa16f", "fiters" : [ { "user": "57da891db39797707093c6e1", "isOwner": False, "status": "invite", "invitationDate": "2016-09-25T00:00:00.0000000Z", }], "place" : "57d66a5b73c0ab6c007beb74", "objectif": "57e28b64cae2161f33b641e3", } r = requests.post("http://127.0.0.1:8010/appointment/", json=appointment,headers=headers) print(r.status_code) print(r.content)