最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

mongoose在不同的路线上正确启动交易

运维笔记admin16浏览0评论

mongoose在不同的路线上正确启动交易

mongoose在不同的路线上正确启动交易

在我的Node.js express应用程序中,我尝试通过mongoose进行交易。我成功连接到MongoDB,并尝试通过我的应用程序中的另一条路径基于该连接启动事务。但不知怎的,我无法通过访问数据库实例

const db = mongoose.connection.db; // undefined
const session = db.startSession() // Err : cannot read porperty startSession of undefined 
session.startTransaction();

我读到的某个地方使用连接作为数据库实例,我检索一个会话,但没有在其上调用startTransaction的方法

const session = mongoose.connection.startSession(); // works
session.startTransaction(); // Err : session.startTransaction is not a function

任何人都可以向我解释如何在mongoose上正确启动交易吗?

提前致谢

MongoDB版本:4.1.x mongoose版本:5.4.X

回答如下:

这不是关于启动事务,而是与构建模块的方式有关。我建议您将数据库连接模块创建为一个脚本,然后从那里导出“db”,您可以在其中保存/更新对数据库的引用。这样的事情(琐碎的例子):

// db module
const state = {
  db: null
};
function connect() {
  state.db = mongoose.createConnection(process.env.NODE_URL);
}
function getConnection() {
  return Promise.resolve(state.db);
}      
module.exports = {
    connect,
    getConnection,
}

然后在你的模块中,懒洋洋地得到这个:

let getConnection = require('./db'); // or wherever it is
module.exports = function(params, opts) {
    return getConnection()
        .then(db => db.startSession())
        .then(session => session.startTransaction(/* ... */))
        // ..
}

该模块是人为设计的,但它可能会帮助您实现目标。

发布评论

评论列表(0)

  1. 暂无评论