簡體   English   中英

我們如何在 sequelize 中關閉數據庫“連接”

[英]How do we close the database `connection` in sequelize

我們如何在下面的app.post中關閉數據庫connection sequelize會自動處理它嗎?

server.js

const sequelize = new Sequelize(DB_NAME, DB_USERNAME, DB_PASSWORD, {
  host: DB_HOST,
  dialect: DB_DIALECT,
  pool: DB_POOL,
  port: DB_PORT
});

const Availability = availabilitySchema(sequelize, DataTypes);

app.post('/service/availability', async (req, res) => {
  try {
    const userEmail = req.query.email;
    const dailyStatus =  req.body.dailystatus;
    var playerData = {email:userEmail, dailystatus: dailyStatus};
    const playerDailyStatus = await Availability.create(playerData);
    res.status(200).json({ success: true });
  } catch (e) {
    res.status(500).json({ message: e.message });
  }
});

據我了解(我昨天才開始看 sequelize - 如果我錯了,請發表評論) Sequelize 匯集了它的連接,所以你真的沒有什么可以關閉的; 它像任何其他 ORM 一樣根據需要打開和關閉連接,並且大多數這些連接是打開的並存在於池中,從池中租用並做一些工作,然后返回到池中。 如果您想限制與數據庫的同時打開連接的數量,您可以配置池選項(看起來您已經擁有),但是如果您正在查看數據庫管理器並看到“omg,我的 sequelize 應用程序有 5 個打開的連接。 . 現在有 10 個 .. 現在 15 個;” 就是這樣。 它會根據需要(最多)打開盡可能多的連接來服務工作負載並使它們保持打開狀態,因為實際打開(TCP 連接)和不斷關閉它們(TCP 斷開連接)會浪費大量時間。

When using an ORM you don't micromanage the connections, you just carry out queries using the modeled objects and let the ORM deal with the low level stuff (opening and closing a connection is a level below crafting the SQL to run, and you hand ORM 也是如此)。 即使在其他地方你已經習慣了,比如 C# new SqlConnection("connstr").Open()實際上可能不會打開 TCP 與數據庫的連接並關閉它; 它可能只是租賃並返回到池中,底層框架管理實際的 TCP 連接及其 state

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM