Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 无法从Mongoose访问req.body数组中的对象_Json_Node.js_Mongodb_Express_Mongoose - Fatal编程技术网

Json 无法从Mongoose访问req.body数组中的对象

Json 无法从Mongoose访问req.body数组中的对象,json,node.js,mongodb,express,mongoose,Json,Node.js,Mongodb,Express,Mongoose,顺序模式 var OrderSchema = new Schema({ OrderDate : {type: Date, default: Date.now()}, userid : {type : Number, ref:'User', default: '0'}, totalPrice : {type : Number, default: '0'}, totalQuantity : {type : Number, defaul

顺序模式

var OrderSchema = new Schema({
        OrderDate : {type: Date, default: Date.now()},
        userid : {type : Number, ref:'User', default: '0'}, 
        totalPrice : {type : Number, default: '0'},
        totalQuantity : {type : Number, default: '0'},
        status : {type : Boolean, default: 'false'}, 
        items : [{
            _id : {type: Schema.Types.ObjectId, ref:'Product'},
            quantity : {type : Number, default: '0'}
        }]
    })
通过邮递员投递时,console.logreq.body表单Nodejs服务器返回

{ totalPrice : '755',
totalQuantity: '12',
userid: '3423324242',
address: 'dsadsd',
items: '{'_id':'5528cfd2e70144e020cb6495', 'quantity':'1' },{'_id':'5528cfd2e70144e012ab6495','quantity':'5' },{'_id':'5528cfd2e70144e020bd6495', 'quantity':'435' },{'_id':'5528cfd2e12144e012ab6495','quantity':'3' }' }
首先,我无法访问items中的任何对象,例如items[0],因为它只返回“{”,可能是因为它将其视为char数组。 其次,我要做的是创建一个新的Order实例并进行一些循环,以便将所有item对象推送到OrderSchema的items数组中。 到目前为止,我唯一的成功就是将数据保存在items数组中,然后以_id和quantity的形式单独发送数据,并以

order.items.push({
'_id' : req.body._id,
'quantity' : req.body.quantity })
但是使用上述方法,我将无法将多个项目对象推送到数组中,因为这些项目是从购物车发送的对象。
因此,基本上我们希望创建一个新的订单,然后将所有这些项目推送到items数组中

看起来Postman在发出POST请求时没有使用application/json作为内容类型,这就是为什么所有值都是字符串。我使用x-www-form-urlencoded@robertklepIn进行POST。在这种情况下,您需要确保您的主体解析器中间件设置为,但在正确传输数组之前,Postman还需要支持扩展语法;不过,application/json可能更容易。@robertklep已经在使用它,app.usebodyParser.json;//将application/vnd.api+json解析为json app.usebodyParser.json{type:'application/vnd.api+json'};//parse application/x-www-form-urlencoded app.usebodyParser.urlencoded{extended:true};因为邮递员似乎使用的是非扩展的、urlencoded的正文数据,不支持嵌套数据。