【发布时间】:2018-09-29 22:31:34
【问题描述】:
我正在尝试实施投票系统,以便我的应用用户可以对其他用户对问题的回答进行投票。
它是一个在后端使用 Express 和 Sequelize 的 Node 应用程序,目前我使用 SQLite 数据库以便于测试。
这是我的模型的相关部分:
// in user.js
User.associate = function (models) {
// ...
models.User.belongsToMany(models.Response, {
through: models.Vote,
as: 'Votes'
})
}
// in response.js
Response.associate = function (models) {
// ...
models.Response.belongsToMany(models.User, {
through: models.Vote,
as: 'Votes'
})
}
// in vote.js
module.exports = (sequelize, DataTypes) => {
return sequelize.define('Vote', {
upVote: {
type: DataTypes.BOOLEAN,
allowNull: false
}
})
}
所以现在在我的votes.js 控制器文件中,我可以尝试创建一个新投票,给定一个UserId 和一个ResponseId,如下所示:
const user = await User.findById(req.user.id)
const response = await Response.findById(req.params.responseId)
await response.addVote(user, {
upVote: true
})
res.send(await response.getVotes())
问题是,虽然Votes 连接表创建正确,并且虽然我向addVote 函数传递了一个布尔值,直接指示upVote 属性应该存储什么值,但我只是收到一条错误消息,指出@ 987654329@.
我添加 not null 约束的唯一原因是因为没有它,我刚刚收到了upVote 的空值投票。
有人知道为什么会发生这种情况吗?
【问题讨论】:
标签: javascript node.js sqlite express sequelize.js