我有一个Room
模型:
module.exports = (sequelize, DataTypes) => {
const Room = sequelize.define(
'Room',
{
type: DataTypes.ENUM('WANT', 'HAVE', 'SWAP')
},
{
building: DataTypes.ENUM('AA', 'BB', 'CC')
},
{
block: DataTypes.STRING
},
{
room: DataTypes.SMALLINT
}
)
}
和room migrations
:
module.exports = {
up: (queryInterface, Sequelize) =>
queryInterface.createTable('Rooms', {
id: {..},
type: {
type: Sequelize.ENUM,
values: ['WANT', 'HAVE', 'SWAP'],
allowNull: false
},
building: {
type: Sequelize.ENUM,
values: ['AA', 'BB', 'CC']
},
block: {
type: Sequelize.STRING
},
room: {
type: Sequelize.SMALLINT
}
...
}
和一个graphql schema
:
type Room {
id: ID!
type: String!
building: String
block: String
room: Int
}
input RoomInput {
type: String!
building: String
block: String
room: Int
}
type RootQuery {
rooms: [Room!]!
}
type RootMutation {
createRoom(roomInput: RoomInput): Room!
}
但是,当我尝试像这样创建房间模型时:
return Room.create({
type: args.roomInput.type,
building: args.roomInput.building,
block: args.roomInput.block, // not even when I do block: 'block'
room: args.roomInput.room
})
.then(room => room)
.catch(...)
由于某些原因,只有type
属性可以保留,而其他所有属性都为空。
编辑:我刚刚意识到在执行创建时,该查询将被执行:Executing (default): INSERT INTO "Rooms" ("id","type","createdAt","updatedAt") VALUES (DEFAULT,$1,$2,$3) RETURNING *;
。插入中只有类型列,为什么?
答案 0 :(得分:0)
我刚刚意识到,我的会议室模型完全错误,这是正确的形式:
module.exports = (sequelize, DataTypes) => {
const Room = sequelize.define('Room', {
type: DataTypes.ENUM('WANT', 'HAVE', 'SWAP'),
building: DataTypes.ENUM('AA', 'BB', 'CC'),
block: DataTypes.STRING,
room: DataTypes.SMALLINT
})
return Room
}