Как вы передаете объекты вокруг приложения 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