为什么Spread()方法在Sequelize中不起作用?

时间:2018-10-29 09:28:20

标签: javascript node.js sequelize.js

我正在为Sequelize应用程序使用node.js。如果不存在,我使用findOrCreate()方法创建一个新用户。根据{{​​3}} findOrCreate返回一个数组,其中包含找到或创建的对象,以及一个布尔值,如果创建了新对象,则该布尔值为true,否则为false。

sequelize建议使用spread()方法,该方法将数组分为两部分,并将它们作为参数传递给回调函数。第一部分是用户对象,第二部分是布尔值(如果添加了新行)。

我以async/await风格工作。我的代码是:

app.post('/signup', async (req, res) => {
        try {
            let insertedUser = await User.findOrCreate({
                where: { email: req.body.userEmail },
                defaults: {
                    pass: req.body.userPass
                }
            })
            insertedUser.spread((user, created) => {
                if(created) {
                    res.json(user.email)
                }
            })
        } catch (err) {
            console.log(`ERROR! => ${err.name}: ${err.message}`)
            res.status(500).send(err.message)
        }
    }
})

发布请求后,我收到错误消息:

ERROR! => TypeError: insertedUser.spread is not a function

为什么会这样,医生说它必须是一个函数?

1 个答案:

答案 0 :(得分:4)

{"_id":"test1", min: , max: , sum: , avg: }, {"_id":"test2", min: , max: , sum: , avg: }, {"_id":"test3", min: , max: , sum: , avg: }, {"_id":"test4", min: , max: , sum: , avg: } 方法在spread的解析值上不存在。您必须将findOrCreatespread返回的then中的promise进行链接。或者,您需要直接与findOrCreate链接并使用findOrCreate

这是await的更新代码:

await