Node.js 嵌套MongoDB文档发布(Mongoose和Node Js)
在将数据插入mongoDb的嵌套文档结构时,我遇到了一些问题 以下是猫鼬模型:Node.js 嵌套MongoDB文档发布(Mongoose和Node Js),node.js,mongodb,express,postman,mongoose-schema,Node.js,Mongodb,Express,Postman,Mongoose Schema,在将数据插入mongoDb的嵌套文档结构时,我遇到了一些问题 以下是猫鼬模型: const funnel = new mongoose.Schema({ funnelName:{ type:String, unique:true }, group: String, category: String, funnelStep: { stepType: String, stepName: String, stepPath: String, isTrack
const funnel = new mongoose.Schema({
funnelName:{
type:String,
unique:true
},
group: String,
category: String,
funnelStep: {
stepType: String,
stepName: String,
stepPath: String,
isTracking: Boolean,
viewsStorage: []
} })
下面是我发送给Db的推送:
router.post('/createFunnel',async (req,res)=>{
if(!req.body.funnelName || !req.body.group || !req.body.category)
{return res.status(422).json({error:"Please add all the fields."})}
try{
const funnelSteps = []
funnelSteps.push({
stepType: req.body.stepType,
stepName: req.body.stepName,
stepPath: req.body.stepPath,
isTracking: req.body.isTracking,
viewsStorage: req.body.viewsStorage
})
const funnels = new Funnel({
funnelName : req.body.funnelName,
group : req.body.group,
category : req.body.category,
funnelStep : funnelSteps
})
await funnels.save(function(err){
if(err){
return res.status(422).send({error: err.message})
}
return res.json(funnels)
})
} catch(err){
return res.status(422).send({error: err.message})
} })
下面是我通过邮递员发送的数据结构:
{
"funnelName":"Name-Funnel",
"group":"AVC",
"category":"XYZ",
"funnelStep":[
{
"stepType":"Advert",
"stepName":"Angle",
"stepPath":"google.com",
"isTracking":1,
"viewsStorage":[0,0]
},
{
"stepType":"Optin",
"stepName":"Ver 1",
"stepPath":"fb.com",
"isTracking":1,
"viewsStorage":[1,0]
},
{
"stepType":"Check",
"stepName":"rev-cat",
"stepPath":"google.com",
"isTracking":0,
"viewsStorage":[2,0]
}
] }
下面是我得到的回应:
{
"funnelStep": {
"viewsStorage": []
},
"_id": "5ec0ff78a6dfab18f4210e96",
"funnelName": "Testing The Latest Method4",
"group": "AVC",
"category": "XYZ",
"__v": 0
}
由于数据插入不正确,如何解决此问题
除此之外,在viewsStorage数组中,如何存储日期和一个数字,这些数字在特定操作后会增加,并根据日期保存在数组中?我认为在
漏斗步骤
数组创建部分存在一个问题。您正试图直接从req.body
而不是req.body.funnelStep
const funnelSteps=[]
请求主体漏斗步骤forEach(fs=>{
漏斗步推({
stepType:fs.stepType,
stepName:fs.stepName,
stepPath:fs.stepPath,
isTracking:fs.isTracking,
viewsStorage:fs.viewsStorage
})
})
模式
const漏斗=新的猫鼬模式({
漏斗名称:{
类型:字符串,
独一无二:真的
},
组别:String,,
类别:字符串,
漏斗步骤:[{
步骤类型:字符串,
stepName:String,
stepPath:String,
isTracking:布尔,
视图存储:[]
}] })
嘿,谢谢你的时间,但它仍然不起作用。我仍然得到相同的输出。我通过日志检查了漏斗步骤数组中的数据是否正确填充,当漏斗步骤映射到漏斗时存在一些问题。漏斗模式中存在问题,漏斗步骤当前是JSON,需要将其设置为任意数组。我已经更新了答案,感谢毗湿奴的努力,它正在工作。我还有一个查询,我目前正在尝试在viewsStorage数组中存储日期和不断递增的数字。例如-[14/05/2020255]、[15/05/2020150]、[16/05/2020200]您能为我推荐实现上述阵列的最佳方法吗?