外键约束
This commit is contained in:
parent
5d526b3a67
commit
5126444ef9
@ -18,8 +18,11 @@ export default defineEventHandler(async event => {
|
|||||||
if (query.archive) {
|
if (query.archive) {
|
||||||
query.archive = query.archive === 'true'
|
query.archive = query.archive === 'true'
|
||||||
}
|
}
|
||||||
|
const include = [{
|
||||||
return await event.context.db.Blog.findAll({ where: query, order }).then(list => {
|
model: event.context.db.User,
|
||||||
|
attributes: ['id', 'name', 'avatar']
|
||||||
|
}]
|
||||||
|
return await event.context.db.Blog.findAll({ where: query, order, include }).then(list => {
|
||||||
const regex = /<code\s+class="(.*)"\s*>([\s\S]*?)<\/code>/g;
|
const regex = /<code\s+class="(.*)"\s*>([\s\S]*?)<\/code>/g;
|
||||||
return list.map(item => ({
|
return list.map(item => ({
|
||||||
...item.dataValues,
|
...item.dataValues,
|
||||||
|
@ -12,7 +12,7 @@ export default defineNitroPlugin(nitro => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
// 定义数据模型
|
// 定义数据模型
|
||||||
const User = db.define('User', {
|
const User = db.define('user', {
|
||||||
id: { type: INTEGER, primaryKey: true, autoIncrement: true },
|
id: { type: INTEGER, primaryKey: true, autoIncrement: true },
|
||||||
name: { type: STRING, allowNull: false },
|
name: { type: STRING, allowNull: false },
|
||||||
avatar: { type: STRING, allowNull: true },
|
avatar: { type: STRING, allowNull: true },
|
||||||
@ -23,49 +23,53 @@ export default defineNitroPlugin(nitro => {
|
|||||||
updatedAt: { type: DATE, allowNull: false, defaultValue: new Date() }
|
updatedAt: { type: DATE, allowNull: false, defaultValue: new Date() }
|
||||||
})
|
})
|
||||||
|
|
||||||
const Session = db.define('Session', {
|
const Session = db.define('session', {
|
||||||
id: { type: STRING, primaryKey: true },
|
id: { type: STRING, primaryKey: true },
|
||||||
user_id: { type: INTEGER, allowNull: false },
|
user_id: { type: INTEGER, allowNull: false, references: { model: User, key: User.id } },
|
||||||
ip: { type: STRING, allowNull: false },
|
ip: { type: STRING, allowNull: false },
|
||||||
ua: { type: STRING, allowNull: false },
|
ua: { type: STRING, allowNull: false },
|
||||||
createdAt: { type: DATE, allowNull: false, defaultValue: new Date() },
|
createdAt: { type: DATE, allowNull: false, defaultValue: new Date() },
|
||||||
updatedAt: { type: DATE, allowNull: false, defaultValue: new Date() }
|
updatedAt: { type: DATE, allowNull: false, defaultValue: new Date() }
|
||||||
})
|
})
|
||||||
|
|
||||||
const Avatar = db.define('Avatar', {
|
const Avatar = db.define('avatar', {
|
||||||
id: { type: INTEGER, primaryKey: true, autoIncrement: true },
|
id: { type: INTEGER, primaryKey: true, autoIncrement: true },
|
||||||
user_id: { type: INTEGER, allowNull: false },
|
user_id: { type: INTEGER, allowNull: false, references: { model: User, key: User.id } },
|
||||||
url: { type: STRING, allowNull: false },
|
url: { type: STRING, allowNull: false },
|
||||||
createdAt: { type: DATE, allowNull: false, defaultValue: new Date() },
|
createdAt: { type: DATE, allowNull: false, defaultValue: new Date() },
|
||||||
updatedAt: { type: DATE, allowNull: false, defaultValue: new Date() }
|
updatedAt: { type: DATE, allowNull: false, defaultValue: new Date() }
|
||||||
})
|
})
|
||||||
|
|
||||||
const Blog = db.define('Blog', {
|
const Blog = db.define('blog', {
|
||||||
id: { type: INTEGER, primaryKey: true, autoIncrement: true },
|
id: { type: INTEGER, primaryKey: true, autoIncrement: true },
|
||||||
name: { type: STRING, allowNull: false },
|
name: { type: STRING, allowNull: false },
|
||||||
content: { type: STRING, allowNull: false },
|
content: { type: STRING, allowNull: false },
|
||||||
user_id: { type: INTEGER, allowNull: false, defaultValue: 1 },
|
user_id: { type: INTEGER, allowNull: false, references: { model: User, key: User.id } },
|
||||||
archive: { type: BOOLEAN, defaultValue: false },
|
archive: { type: BOOLEAN, defaultValue: false },
|
||||||
createdAt: { type: DATE, allowNull: false, defaultValue: new Date() },
|
createdAt: { type: DATE, allowNull: false, defaultValue: new Date() },
|
||||||
updatedAt: { type: DATE, allowNull: false, defaultValue: new Date() }
|
updatedAt: { type: DATE, allowNull: false, defaultValue: new Date() }
|
||||||
})
|
})
|
||||||
|
|
||||||
const Gallery = db.define('Gallery', {
|
const Gallery = db.define('gallery', {
|
||||||
id: { type: INTEGER, primaryKey: true, autoIncrement: true },
|
id: { type: INTEGER, primaryKey: true, autoIncrement: true },
|
||||||
name: { type: STRING, allowNull: false },
|
name: { type: STRING, allowNull: false },
|
||||||
description: { type: STRING, defaultValue: '' },
|
description: { type: STRING, allowNull: false, defaultValue: '' },
|
||||||
path: { type: STRING },
|
path: { type: STRING, allowNull: false },
|
||||||
width: { type: INTEGER },
|
width: { type: INTEGER, allowNull: false },
|
||||||
height: { type: INTEGER },
|
height: { type: INTEGER, allowNull: false },
|
||||||
format: { type: STRING },
|
format: { type: STRING, allowNull: false },
|
||||||
mimetype: { type: STRING },
|
mimetype: { type: STRING, allowNull: false },
|
||||||
size: { type: INTEGER },
|
size: { type: INTEGER, allowNull: false },
|
||||||
user_id: { type: INTEGER },
|
user_id: { type: INTEGER, allowNull: false, references: { model: User, key: User.id } },
|
||||||
nsfw: { type: BOOLEAN, defaultValue: false },
|
nsfw: { type: BOOLEAN, allowNull: false, defaultValue: false },
|
||||||
createdAt: { type: DATE, defaultValue: new Date() },
|
createdAt: { type: DATE, allowNull: false, defaultValue: new Date() },
|
||||||
updatedAt: { type: DATE, defaultValue: new Date() }
|
updatedAt: { type: DATE, allowNull: false, defaultValue: new Date() }
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// 定义关联
|
||||||
|
User.hasMany(Blog, { foreignKey: 'user_id' }) // 一个用户有多篇文章
|
||||||
|
Blog.belongsTo(User, { foreignKey: 'user_id' }) // 一篇文章属于一个用户
|
||||||
|
|
||||||
// 同步数据模型
|
// 同步数据模型
|
||||||
db.sync({ alter: true, logging: false })
|
db.sync({ alter: true, logging: false })
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user