gpt4 book ai didi

javascript - 在多个路由之间共享数据库连接?

转载 作者:行者123 更新时间:2023-12-03 12:20:37 25 4
gpt4 key购买 nike

我创建了一个极其简单的 Node.js应用程序基于Expressroute-separation例子。我想用 MongoDB 为这个应用程序提供动力司机Mongoose 。此示例仅列出 UsersKittens .

var express = require('express');
var app = express();
var mongoose = require('mongoose');
var user = require('./user');
var kitten = require('./kitten');

// Connect MongoDB
mongoose.connect('mongodb://localhost/mongoose');

// Express config here
...

// User
app.all('/users', user.list);

// Kitten
app.all('/kittens', kitten.list);

// Mongoose connection
var db = mongoose.connection;
db.once('open', function callback () {
var kittySchema = mongoose.Schema({ name: String });
});

if (!module.parent) {
app.listen(3000);
console.log('Express started on port 3000');
}

对我来说,明智的做法是在启动时连接到 Mongo 数据库,而不是针对每个请求。

但是我如何与 user 共享 Mongoose 连接和kitten路线?我知道如果我不需要共享两者之间的连接,我可以连接到我的 user.js 中的数据库和kitten.js代码。

最佳答案

node.js 中,当您require一个文件时,您会恰好运行一次该文件中的代码。这意味着你可以通过闭包来存储东西。

foobardb.js

(function(){
"use strict"; // always nice to have

var mongoose = require('mongoose'),
databaseConnection;

module.exports = function() {

if ( !databaseConnection ) {
mongoose.connect('mongodb://localhost/mongoose')
databaseConnection = mongoose.connection;
}

(...)
};

})();

databaseConnection 将与您所做的所有 require("foobardb.js"); 共享

关于javascript - 在多个路由之间共享数据库连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24460676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com