我应该在哪里在模型或控制器中编写查询(序列化)?

三人组

我试图弄清楚应该在使用sequalize作为ORM的node js应用程序中在哪里写查询

例如,我有一个模型地址,我这样写数据:

let adr = await Address.create({street, number, city, state, country})

我应该在获取数据的控制器中还是在模型中编写此代码,然后将其(例如完整的对象地址)传递给模型的方法?最佳做法是什么?

我认为最好在模型中编写它,因为我可以在许多控制器中使用相同的代码。但是也许还有其他一些限制。

亚历山德鲁·奥拉鲁(Alexandru Olaru)

实际上,您应该使用repository背后的想法是制作一个模块,该模块将提取数据库,将其作为依赖项注入,然后在控制器中使用存储库,这是一个简短的示例。

// repository.js

module.exports = (db) => {
   const findUserById = (id) => {
        // db query your user by id
   }

   const createUser = (data) {
       // db insert a new user
   }

   // ... other repository functions to deal with the database

   return Object.create({
     findUserById,
     createUser,
     // ...
   })
} 

然后,在控制器中,您将通过提供适当的数据库连接来使用存储库。

const repository = require('./repository.js')(dbConnection);

app.get('/users/:id', (req, res) => {
   repository.findUserById(req.params.id);
   // ...
})

这样,您可以通过模拟数据库轻松测试代码,甚至可以使用良好的值进行测试。你抽象你的数据库连接,比如当你需要从改变你的数据库的其他重要功能mysql,以mongodb你只改变库而不是整个应用程序或控制器。

因此,一个好的做法是使用存储库,sequelize因为也存在一种执行此操作的方法。

var db = require('../models');

var UsersRepository = {
    findByEmail: function(email) {
        return db.User.findAll({
            where: {
                email: email
            }
        })
    }
}

module.exports = UsersRepository;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我们应该在哪里编写我们的 CURD 操作在模型视图集或视图集或 django rest 框架中的序列化程序中

我应该在哪里获取推文?(控制器,模型,助手等)

我应该在Lagom中的哪里定义自定义(反)序列化器?

我应该在哪里保存序列化数据文件?

我应该在哪里放置逻辑以加载视图控制器?

我应该在哪里安装TFS 2013测试控制器?

什么时候应该在控制器和模型中编写代码?

如果我的应用程序在各种视图控制器中都使用位置管理器,我应该在哪里实例化它?

可以由多个控制器和命令使用的Laravel方法。应该在哪里?

在“模型”或“控制器”中在哪里编写此方法?

我应该在哪里放置一个我想在多个控制器中使用的函数,而不仅仅是在我创建它的控制器中?

Symfony。我应该在哪里放置复杂的查询?

我们应该在哪里为cfwheels中的表单编写验证代码?

我应该在哪个Controller中为关系中的模型编写逻辑

我应该在哪里把事件监听器?

我应该在哪里为SwiftUI中的视图创建模型实例?

我的表单需要其他数据,我应该在哪里放置路由和控制器方法来获取它?

我应该在Elixir Phoenix的控制器或模型中使用Ecto.Repo吗?

在这个复杂的查询中,我应该在哪里指定output_field kwarg?

我应该在哪里使用 'use' 在 php 中?

我应该在哪里查看MySQL中的文章

我应该在哪里安装 Ubuntu 中的软件?

我应该在哪里刷新 SvelteKit 中的 JWT

我应该在哪里修改?

我应该在哪里初始化一个变量以在 IF 块中工作?

当您应该在Rails应用程序中使用控制器中的变量时,将javascript代码放在哪里?

我应该在控制器或服务中记录错误?

我应该在哪里编写代码以覆盖MVC请求的Route数据值?

我应该在哪里编写代码,以便Composer可以自动加载PHP类?