繁体   English   中英

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

[英]Why spread() method doesn't work in Sequelize?

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

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

我在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

为什么这样,医生说它必须是一个功能?

findOrCreate解析后的值不存在spread方法。 你必须是链状spreadthenpromise通过返回findOrCreate 或者您需要直接与findOrCreate并使用await

这是更新的代码, await

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM