浅谈Node.js ORM框架Sequlize之表间关系

2020-06-17 06:38:56易采站长站整理

// addImage(6,'http://4.png');
// addImage(2,'http://2.png');
// //
function getAllMessage() {
Message.findAll({
where: {
userId: 2
},
include: [
{
model: User,
attributes: [
'id',
'name',
],
},
{
model: Image,
attributes: [
'id',
'url'
] }
],
}).then((result) => {
result = JSON.stringify(result);
console.log('==========================');
console.log(result);
console.log('==========================');

}).catch((error) => {
console.log('==========================');
console.log('查询失败' + error);
console.log('==========================');

});
}
//测试
//getAllMessage();
//删除消息
function delMessage(userId, messageId) {
Message.destroy({
where: {
userId: userId,
id: messageId,
},

}).then((log) => {
log = JSON.stringify(log);
console.log('==========================');
console.log('删除消息成功!' + log);
console.log('==========================');

}).catch((error) => {
console.log('==========================');
console.log('删除消息失败!' + error);
console.log('==========================');

});
}
//测试
//测试发现问题 如果不设置级联 则,从属message表的image表记录不会删除,而只是出现对应messageId 为NULL的现象
//delMessage(2,4);

const Role = sequelize.define('role', {
name: {
type: Sequelize.STRING, allowNull: true,
}
}, {
freezeTableName: true,
});

//对于单个模型的同步
// Role.sync().then((log) => {
// log = JSON.stringify(log);
// console.log('==========================');
// console.log('Role表数据同步成功' + log);
// console.log('==========================');
// Role.create({
// name: '管理员'
// }).then((log) => {
// log = JSON.stringify(log);
// console.log('==========================');
// console.log('添加的数据为' + log);
// console.log('==========================');

// }).catch((error) => {
// console.log('==========================');
// console.log('添加数据失败' + error);
// console.log('==========================');

// });

// }).catch((error) => {
// console.log('==========================');
// console.log('Role模型与表数据同步失败' + error);
// console.log('==========================');

// });

//定义User1模型
const User1 = sequelize.define('user1', {
name: {
type: Sequelize.STRING,
validate: {
notEmpty: true,
len: [2, 30],
}
},
age: {
type: Sequelize.STRING,
defaultValue: 21,
validate: {
isInt: {
msg: '年龄必须是整数!',