Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.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
Node.js 嵌套MongoDB文档发布(Mongoose和Node Js)_Node.js_Mongodb_Express_Postman_Mongoose Schema - Fatal编程技术网

Node.js 嵌套MongoDB文档发布(Mongoose和Node Js)

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

在将数据插入mongoDb的嵌套文档结构时,我遇到了一些问题

以下是猫鼬模型:

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]您能为我推荐实现上述阵列的最佳方法吗?