gpt4 book ai didi

node.js - Sequelize 中的 UUID 主键给出了 : (node:6927) UnhandledPromiseRejectionWarning: SequelizeDatabaseError: Field 'id' doesn't have a default value)

转载 作者:行者123 更新时间:2023-12-03 22:30:00 25 4
gpt4 key购买 nike

我知道这是一个很好的报告问题,但它没有得到很好的记录,并且解决方法不像“ 从 MySQL 删除严格模式”那样“ 专业
我想在我的应用程序中使用 sequelize 将 uuidv4 设置为主键,但我收到了 (node:6927) UnhandledPromiseRejectionWarning: SequelizeDatabaseError: Field 'id' doesn't have a default value)在迁移中设置它会给我这个错误,但是如果我将它添加到我的 Controller 中,它似乎可以工作。
我的问题是,我的解决方法是正确的解决方案还是有更好的方法?
我的迁移

'use strict';
const {Model, DataTypes} = require('sequelize');
const uuidv4 = require('uuid').v4;
module.exports = {
up: async (queryInterface, DataTypes) => {
await queryInterface.createTable('Etudiant', {
id: {
type: DataTypes.UUID,
defaultValue: uuidv4(), // why does this not work ?
unique: true,
primaryKey: true,
},
nom: {
type: DataTypes.STRING,
allowNull: false
},
prenom: {
type: DataTypes.STRING,
allowNull: false
},
mail: {
type: DataTypes.STRING,
allowNull: false
},
convention: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
allowNull: false
}
});
},
down: async (queryInterface, DataTypes) => {
await queryInterface.dropTable('Etudiants');
}
我的路线:
const express = require('express');
const models = require('./src/database/models');
const Sequelize = require('sequelize');
const db = require('./src/database/db');
const uuidv4 = require('uuid').v4;


const app = express();


app.use(express.json());

app.get('/', (req, res) =>{
return models.Etudiant.create({
//id : uuidv4(), // this is where I think is not a propersolution
nom: "AL HR",
prenom: "Malek",
mail: "mail@gmail.com",
convention: "4rzd-3be2lk-4glma"
});
});


app.listen(3000, console.log('G'));

最佳答案

defaultValue 是与数据库级别的默认值相关的表属性。在您的代码中,这被确定为一个值(由 uuid() 函数返回)并且确实不应该起作用。
为了解决这个问题,你可能需要在数据库中使用一些 uuid 扩展来生成这个 uuid,使用 Sequelize.fn

id:   {
type: DataTypes.UUID,
defaultValue: Sequelize.fn('UUID()'), // this UUID() is a mysql function, not a node_module.
unique: true,
primaryKey: true,
},

关于node.js - Sequelize 中的 UUID 主键给出了 : (node:6927) UnhandledPromiseRejectionWarning: SequelizeDatabaseError: Field 'id' doesn't have a default value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67877374/

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