node.js - 如何连接到 mongodb atlas 集群以使用节点 js 创建新数据库
问题描述
我目前正在创建一个多租户应用程序,每当新用户使用特定路由注册时,它都会使用公司名称创建一个数据库,并将信息保存在我的默认数据库(测试)中。
使用我的本地 MongoDB 可以做到这一点,但我无法使用我的 mongo atlas 帐户来实现这一点,而且我还在 URL 上传递了我的 MongoDB,但我无法实现这一点
这是注册码
// @route Post api/user/register
// @desc Register New User
// @access Public
router.post("/register", async (req, res) => {
const { errors, isValid } = validateRegisterInput(req.body)
//Check Validation
if (!isValid) {
return res.status(400).json(errors);
}
try {
const {
name,
email,
password,
company,
password2,
username,
country,
address } = req.body;
const admin = await Admin.findOne({ email: email });
if (admin) {
res.status(400).json({
errors: { msg: "User Already Exist" }
});
}
const secretToken = generateRandomString(30);
const newAdmin = new Admin({
name,
email,
password,
secretToken,
company,
username,
country,
address,
connection: {
domain: company,
db: username,
password: password
},
});
bcrypt.genSalt(10, (err, salt) => {
bcrypt.hash(newAdmin.password, salt, (err, hash) => {
newAdmin.password = hash;
newAdmin
.save()
.then(admin => {
let url = "mongodb://localhost:27017/"; // want to change this to connect to mongodb url so it can create new database...
MongoClient.connect(url, function (err, db) {
if (err) throw err;
const dbo = db.db(`${newAdmin.company}`);
const details = {
name: `${newAdmin.name}`,
address: `${newAdmin.address}`,
password: `${newAdmin.name = hash}`,
role: 1,
email: `${newAdmin.email}`,
isVerified: true,
};
dbo.collection("users").insertOne(details, function (err, res) {
if (err) throw err;
console.log("1 document inserted");
db.close();
});
});
res.status(200).json("successfully create user and user database");
})
.catch(err => console.log(err));
});
});
} catch (error) {
console.error(error);
res.status(500).send("Server error");
}
});
这是我的 server.js 使用户注册成为可能
const express = require("express");
const config = require("config");
const morgan = require("morgan");
const mongoose = require("mongoose");
const bodyParser = require("body-parser");
// Init App
const server = express();
// DB Config
mongoose
.connect(config.get("mongoURI"), {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
useFindAndModify: false
}) // Let us remove that nasty deprecation warrning :)
.then(() => console.log("MongoDB Connected"))
.catch(err => console.log(err));
// Middleware
server.use(morgan("dev"));
server.use(bodyParser.json());
server.use(bodyParser.urlencoded({
extended: true
}));
// Routes
server.use("/api/start", require("./api/Start"));
// Config
server.listen(config.get("port"), () => console.log("server process runing", `${config.get("port")}`));
解决方案
推荐阅读
- amazon-web-services - 获取 AWS Glue 中特定范围的分区数
- rust - Rust:bindgen 不透明类型和字符串之间的转换
- python - Pyspark 按数据框列值写入 CSV 文件名
- php - 使用 for 循环动态创建嵌套数组
- android - 如何在 Android 中制作自定义软键盘,该软键盘也可以通过上、下、左、右和确定等硬键输入进行操作
- javascript - 如何检测 div 何时触摸 div 并在没有画布元素的普通 js 中使其 gavity
- mql4 - 我如何在 mql4 中获得 ea 上的指标颜色
- javascript - 手动触发sortstart事件Jquery ui
- javascript - 使用 React Javascript 中的父组件从功能性子组件调用异步函数
- sql - oracle9i表单中如何调用报表