gpt4 book ai didi

javascript - Array.prototype.slice.call 返回空数组

转载 作者:行者123 更新时间:2023-12-01 00:54:02 25 4
gpt4 key购买 nike

我是 Javascript 初学者。我需要将 JSON 请求数据存储到 mongo db 数据库中的子文档。我想到的方法是将 JSON 请求转换为数组,然后使用 $push 方法将数组传递给子文档。当我使用 Postman Array.prototype.slice.call 发送请求路由时,返回 [] '空数组'。

请告诉我可能的原因是什么。请帮忙!

提前致谢。

// @route    PUT api/prescription/:patientId
// @desc Add prescription
// @access Private

router.post('/:patientId',auth,adminDocguard, async(req,res)=>{
console.log(req.body.prescription);

var newPrescription = Array.prototype.slice.call(req.body.prescription);

console.log(newPrescription)
try {
const patient_profile = await Patient.findOneAndUpdate(

{patientId:req.params.patientId},
{"$push":{"prescription":newPrescription}},
{"upsert":true,"new":true}

);
await patient_profile.save();
res.json(patient_profile);

} catch (err) {
console.error(err.message);
res.status(500).send('Server Error');
}
});

使用 postman 的 JSON 请求:

 {
"prescription":{
"1":{"mediaction": "Crocin456",
"dosage": "200"
},
"2":{"mediaction": "Crocin123",
"dosage": "200"
}
}

}
const mongoose= require('mongoose');
autoIncrement = require('mongoose-auto-increment');
const config =require('config');
const db=config.get('mongoURI');

var connection = mongoose.createConnection(db);

autoIncrement.initialize(connection);

const PatientSchema = new mongoose.Schema({
name:{
type:String,
required: true
},
phonenumber:{
type:Number,
required:true
},
date: {
type: Date,
default: Date.now
},
slider_1:{
type:Number,
required: true
},
slider_2:{
type:Number,
required:true
},
slider_3:{
type:Number,
required:true
},
prescription:[
{
mediaction:{
type:String
},
dosage:{
type:Number
},
morning:{
type:Number
},
evening:{
type:Number
}
}
]

});
PatientSchema.plugin(autoIncrement.plugin, {
model:'Patient',
field:'patientId',
startAt:1,
incrementBy:1
});

module.exports=Patient=mongoose.model('patient',PatientSchema);

最佳答案

如果要将处方对象转换为数组,则应指定新创建的数组中每个对象的形状。由于对象中的处方有一个序列 ID,我可能会将 ii 转换为如下形式:

[
{
"id": 1,
"mediaction": "Crocin456",
"dosage": "200"
},
{
"id": 2,
"mediaction": "Crocin123",
"dosage": "200"
}
]

要应用此转换,您只需使用以下代码即可完成:

const { prescription } = req.body;
const prescriptionArray = Object.keys(prescription).map(id => ({
id,
...prescription[id]
}))

关于javascript - Array.prototype.slice.call 返回空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56739497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com