首页 > 解决方案 > 续集,node.js中的双重包含

问题描述

我想在我的 User.findAll 函数中包含另一个模型。SurveyResult 模型属于 Model Survey。我如何包含模型调查以显示调查属于调查结果

async index (req, res) {
    try {
        const userData = await User.findAll({
            include: [ UserStatus, SurveyResult
            ]
        })
            .map(user => user.toJSON())

        res.send(userData)
    } catch (err) {
        console.log(err)
    }

}

这是我回来的json:

 {
    "id": 3,
    "email": "testing@gmail.com",
    "password": "$2a$08$Y22dOOIgyGhLAOokYluGxupKHRv8zRcbAVK1YEvWVUtoBl7dOsAYK",
    "name": "test",
    "forename": "test",
    "createdAt": "2018-12-05T11:25:30.000Z",
    "updatedAt": "2018-12-05T11:25:30.000Z",
    "AdminId": 1,
    "UserStatuses": [
        {
            "id": 3,
            "sendEmail": false,
            "sendResult": true,
            "createdAt": "2018-12-05T11:25:31.000Z",
            "updatedAt": "2018-12-05T11:25:31.000Z",
            "UserId": 3
        }

我试过了,但它不起作用:

 const userData = await User.findAll({
    include: [
      { UserStatus, SurveyResult, include: [Survey] }
    ]
  })
    .map(user => user.toJSON())

标签: node.jssequelize.js

解决方案


我认为您正在尝试包含嵌套级别,如果是这种情况,您可以这样做

const userData = await User.findAll({
    include: [
        { model : UserStatus }
        { model : SurveyResult ,
            include: {
                model : Survey
            } 
        }
    ]
})

// OR ( Shorthand )

const userData = await User.findAll({
    include: [ UserStatus , { model : SurveyResult , include: [Survey] }]
})

推荐阅读