Как вы передаете объекты вокруг приложения Express?

Я создаю приложение для узлов с использованием Express и Node-Postgres ( https://github.com/brianc/node-postgres). Я хочу создать клиентское соединение только один раз, и я хотел бы иметь возможность доступа к этому соединению из разных модулей. Каков наилучший способ сделать это? Я пытаюсь экспортировать только соединение БД, а не все приложение Express. По сути, каков наилучший способ экспорта и доступа к объектам через приложение узла?

Я проверил этот похожий вопрос, но он кажется специфическим для мангуста.

Лучший способ поделиться параметром соединения с базой данных с mongoose/node.js

3 ответа

Решение

Там нет вещи под названием "лучший способ". Если вам нужно использовать один и тот же объект среди разных модулей, вы должны заключить его в модуль. Что-то вроде этого:

//db.js
var postgres = require (...)
var connection;

module.exports = {
  getConnection: function (){
    return connection;
  },
  createConnection: function (){
    connection = createConnection (postgress);
  }
};

//app.js - main file
require ("./db").createConnection ();

//a.js
var db = require("./db")
db.getConnection()

//b.js
var db = require("./db")
db.getConnection()

Привет, я работаю над решением для этого получил его от RefLink

Вы можете создать схему, подобную этой, чтобы отобразить ваши данные

    const User = mongoose.model('Story', userSchema);
    module.exports = User;
    const mongoose = require('mongoose');
    let Schema = mongoose.Schema;
    const userSchema = new Schema({
    UserID: {
        type: mongoose.Schema.Types.Mixed,
    },
    User_Info: {
        First_Name: {
        type: String,
        },
        Last_Name: {
        type: String,
        },
        Current_Address: {
        type: String,
        },
        Email_Address: {
        type: String,
        },
    },
        Phone_Numbers: [{
            Home_Phone: {
            type: Number,
            },
            Work_Phone: {
            type: Number,
            },
            Cell_Phone: {
            type: Number,
            },
                Phone_verified: [{
                Home: Boolean,
                Work: Boolean,
                Cell: Boolean,
                }],
        }],
    })
    const User = mongoose.model('User', userSchema);
    module.exports = User;

И маршрут API может выглядеть так

        app.post('/api/user', function(req, res) {
    User.create({
        UserID: req.body.userid,
        User_Info: req.body.userinfo,
        First_Name: req.body.firstname,
        Last_Name: req.body.lastname,
        Current_Address: req.body.currentaddress,
        Email_Address: req.body.emailaddress,
        Phone_Numbers: req.body.phonenumbers,
        Home_Phone: req.body.homephone,
        Work_Phone: req.body.workphone,
        Cell_Phone: req.body.cellphone,
        Phone_Verified:
        req.body.phoneverified,
        Home: req.body.home,
        Work: req.body.work,
        Cell: req.body.cell,
    }).then(user => {
        res.json(user)
    });
    });

Вы можете сделать что-то подобное..

//db.js
var pg = require('pg'); 

var conString = "tcp://postgres:1234@localhost/postgres";

module.exports.connectDatabase = function(callback){
var client = new pg.Client(conString);
client.connect(function(err) {
  if(err){
     console.log(err);
     process.exit(1);
  }

  module.exports.client = client;
  callback();
})

//app.js
// We are trying to connect to database at the start of our app and if it fails we exit       the process
var db = require('./db');
db.connectDatabase(function(){
  // your other code
})

//a.js
var db = require('./db');
//you can access your client here to perform database operations like that
db.client
Другие вопросы по тегам