Node.js 如何使用Sequelize在Express中创建常见的CRUD操作?
我想用Sequelize在Express js中创建常见的crud操作。 我创建了getAll函数,如下所示Node.js 如何使用Sequelize在Express中创建常见的CRUD操作?,node.js,express,sequelize.js,Node.js,Express,Sequelize.js,我想用Sequelize在Express js中创建常见的crud操作。 我创建了getAll函数,如下所示 exports.getAll = (module, res,next) => { module .findAndCountAll({ where: { CreatedBy: 1, isDeleted: false, isActive
exports.getAll = (module, res,next) => {
module
.findAndCountAll({
where: {
CreatedBy: 1,
isDeleted: false,
isActive: true
},
offset: 0,
limit: 10,
}).then((result) => {
res.status(200).json({
message: "data Fetched from database",
statusCode: 200,
result: result,
});
}).catch((error) => {
console.log(error);
});
}
req.user
.createCategory({
name: name,
})
我在控制器函数中调用这个公共函数,如下所示,通过传递模型名称,例如category
crudOperations.getAll(category, res);
它工作得很好。但是如何为post数据创建函数呢?
对于发布数据,我想使用Sequelize的神奇方法(因为一个用户可以与许多类别关联,如下所示)
例如,我想添加关于用户的类别,所以我想使用下面的魔术方法
exports.getAll = (module, res,next) => {
module
.findAndCountAll({
where: {
CreatedBy: 1,
isDeleted: false,
isActive: true
},
offset: 0,
limit: 10,
}).then((result) => {
res.status(200).json({
message: "data Fetched from database",
statusCode: 200,
result: result,
});
}).catch((error) => {
console.log(error);
});
}
req.user
.createCategory({
name: name,
})
- 如何将user和createCategory作为参数传递给公共函数
- 如何将数据传递给函数
- 为CRUD创建公共函数是否是一种良好的做法?还是应该为每个模块提供编写功能
同样,上述方法是我的思考过程,我根据我的经验向您提出建议。同样,还有更多的改进空间,您可能需要创建。Hi Dipak,感谢您的见解,但我的问题是-当我们添加与其他模型的关联时,Sequelize提供了一组方法。例子。如果我们在用户和类别中设置一对多关系,那么它将有一组新的方法。在这种情况下,我们如何将模型传递给公共函数。示例:req.user.createCategory({name:name,})您希望传递的内容是什么?能否以您的方式给我一个示例,说明您在查询中实际需要哪些内容。现在检查我的更新答案,我已经更新了它。当您想从另一个表中获取数据时,或者以用户有多个宠物为例。在这种情况下,您应该在include数组中传递模型名,它将起作用。我对typeorm也做了同样的事情,而且效果很好。第二个教程。hasMany(Comment,{as:“comments”});Comment.belongsTo(教程,{foreignKey:“tutorialId”,as:“Tutorial”,});是模型级别的声明,因此您应该传递include[]
const BaseModelHelper = require("BaseModel.helper.js);
class DataServices{
static async add(){
// Owner table entry
const {id} = await BaseModelHelper.create({
model: "Owner'
properties:{
name: 'Loren',
role: 'admin',
},
});
// Cat table entry
const {id: petId} = await BaseModelHelper.create({
model: "Pet'
properties:{
owner_id: 'c0eebc45-9c0b',
type: 'cat',
}
});
}
static async findWithRelations(){
const arrData = await BaseModelHelper.find({
model: 'User',
where: {
role: 'admin'
},
attributes: ['id', 'username', 'age'],
include: [{
model: pet,
through: {
attributes: ['createdAt', 'startedAt', 'finishedAt'],
where: {completed: true}
}
}]
});
}
static async findBelongs(){
const arrData = await BaseModelHelper.find({
model: 'User',
where: {
role: 'admin'
},
attributes: ['id', 'username', 'age']
});
}
static async update(){
const arrData = await BaseModelHelper.update({
Model: 'Pet',
newData:{
name: 'lina',
}
where: {
name: 'suzi',
}
});
}
static async delete(){
const arrData = await BaseModelHelper.delete({
Model: 'Pet',
where: {
name: 'lina',
}
});
}
}
module.exports = DataServices;