在 Adonisjs 中生成 UUID 并且 MySQL 不工作
Generate UUID in Adonisjs and MySQL isn't working
我无法理解如何在 adonisjs 中创建 UUID,我的数据库使用 MySQL。当我启动服务器和 post 数据时,此 id_customer 输出仍在自动递增模型中。谁能帮我解决这个问题?
这是我的迁移文件中的模式代码:
async up () {
await this.db.raw('CREATE EXTENSION IF NOT EXISTS "uuid-ossp";')
}
up () {
this.create('customers', (table) => {
table.increments()
table.uuid('id_customer').primary().defaultTo(this.db.raw('uuid_generate_v4()'))
table.timestamps()
})
}
但您可以通过在 Lucid 模型上添加 Hook 来实现此目的。
首先,创建 customer
架构如下:
"use strict";
const Schema = use("Schema");
class Customer extends Schema {
up() {
this.create("customers", table => {
table.uuid("id").primary();
// Rest of your schema
});
}
down() {
this.drop("customers");
}
}
module.exports = Customer;
让我们使用 cmd adonis make:hook Customer
创建一个名为 CustomerHook
的钩子
"use strict";
const uuidv4 = require("uuid/v4");
const CustomerHook = (exports = module.exports = {});
CustomerHook.uuid = async customer => {
customer.id = uuidv4();
};
在您的 Customer
模型上添加这些行
"use strict";
const Model = use("Model");
class Customer extends Model {
static boot() {
super.boot();
this.addHook("beforeCreate", "CustomerHook.uuid");
}
static get primaryKey() {
return "id";
}
static get incrementing() {
return false;
}
// Rest of the model
}
module.exports = Customer;
在插入客户详细信息时,默认情况下会创建一个唯一的 UUID。
在这里阅读更多关于 adonis hook 的信息:https://adonisjs.com/docs/4.1/database-hooks
我无法理解如何在 adonisjs 中创建 UUID,我的数据库使用 MySQL。当我启动服务器和 post 数据时,此 id_customer 输出仍在自动递增模型中。谁能帮我解决这个问题?
这是我的迁移文件中的模式代码:
async up () {
await this.db.raw('CREATE EXTENSION IF NOT EXISTS "uuid-ossp";')
}
up () {
this.create('customers', (table) => {
table.increments()
table.uuid('id_customer').primary().defaultTo(this.db.raw('uuid_generate_v4()'))
table.timestamps()
})
}
但您可以通过在 Lucid 模型上添加 Hook 来实现此目的。
首先,创建 customer
架构如下:
"use strict";
const Schema = use("Schema");
class Customer extends Schema {
up() {
this.create("customers", table => {
table.uuid("id").primary();
// Rest of your schema
});
}
down() {
this.drop("customers");
}
}
module.exports = Customer;
让我们使用 cmd adonis make:hook Customer
CustomerHook
的钩子
"use strict";
const uuidv4 = require("uuid/v4");
const CustomerHook = (exports = module.exports = {});
CustomerHook.uuid = async customer => {
customer.id = uuidv4();
};
在您的 Customer
模型上添加这些行
"use strict";
const Model = use("Model");
class Customer extends Model {
static boot() {
super.boot();
this.addHook("beforeCreate", "CustomerHook.uuid");
}
static get primaryKey() {
return "id";
}
static get incrementing() {
return false;
}
// Rest of the model
}
module.exports = Customer;
在插入客户详细信息时,默认情况下会创建一个唯一的 UUID。
在这里阅读更多关于 adonis hook 的信息:https://adonisjs.com/docs/4.1/database-hooks