gpt4 book ai didi

javascript - 如何使 findOrCreate 的返回值可供路由器使用

转载 作者:行者123 更新时间:2023-12-02 23:48:07 25 4
gpt4 key购买 nike

因此,在我的express应用程序中,我有一个单独的文件database.js,其中包含用于插入、删除、更新等的所有模型和函数。我还为每个模型都有一个单独的 Controller 。

数据库.js

module.exports = {
createUser: function (username, email, password) {
return sequelize.sync().then(function () {
User.findOrCreate({
where: {
username: name,
email: email
},
defaults: {
username: username,
password: password,
email: email
}
}).then(([user, created]) => {
console.log(user.get({plain:true}));
console.log(created)
});
});
}
};

Controller /user.js

const database = require("../database.js");
module.exports = {
register: function (req, res) {
database.createUser(req.body.username, req.body.email, req.body.password);
res.json({...
})

}
};

所以基本上我想获取用户对象和 bool 值,告诉我它是否已创建到路由器,以便我可以检查用户是否已创建并做出适当的响应。

最佳答案

您可以删除 createUser 中的 then 并在调用该函数时解析 Promise:

module.exports = {
createUser: function (username, email, password) {
return User.findOrCreate({
where: {
username: name,
email: email
},
defaults: {
username: username,
password: password,
email: email
}
})
};

然后,promise 将解析为一个包含用户对象和您要查找的 bool 值的数组

const database = require("../database.js");
module.exports = {
register: function (req, res) {
database.createUser(req.body.username, req.body.email, req.body.password)
.then((result) => {
const [ object, created ] = result;
res.json({ user_is_created: created })
})
}
};

这不是一个完整的解决方案,您可能必须探索边缘情况和错误,但这基本上就是您的做法。

关于javascript - 如何使 findOrCreate 的返回值可供路由器使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55762448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com