node.js - 如何在 Mongoose 中设置数据库名称和集合名称?
问题描述
我正在构建一个连接到 MongoDB-Atlas 的小程序。我创建了一个连接、一个模式、一个模型并创建了一个文档。但不知何故,我的数据库名称是“测试”,集合名称是“用户”,没有我在代码或 Atlas 中定义它,这是默认名称吗?以及如何创建/重命名数据库和集合。
编码 :
用户.js
const mongoose = require('mongoose');
const SchemaObj = mongoose.Schema;
const userSchema = new SchemaObj({
name : {
type:String,
require:true
},
email : {
type:String,
require:true
},
password: {
type:String,
require:true
}
});
mongoose.model('User',userSchema);
应用程序.js
const express = require('express');
const app = express();
const rout = express.Router();
const PORT = 8888;
const {connectionString} = require('./Keys');
const mongoose = require('mongoose');
app.use(express.json());
app.use(require('./routes/auth'));
app.get('/',(req,res)=>{
console.log('succesfully connected');
res.send('im in!');
});
let server = app.listen(PORT,'0.0.0.0',()=>{
let FuncPort = server.address().port
let host = server.address().address
console.log("Example app listening at http://%s:%s", host, FuncPort)
});
const client = mongoose.connect(connectionString, {
useNewUrlParser: true,
useUnifiedTopology: true
});
mongoose.connection.on('connected',()=>{
console.log('connected to mongodb oh hell yea');
});
mongoose.connection.on('error',()=>{
console.log('error connecting to mongodb oh hell yea');
});
auth.js
const mongoose = require('mongoose');
const express = require('express');
const route = express.Router();
require('../moduls/User');
const user = mongoose.model("User");
rout.post('/sign',(req,res)=>{
const {name,password,email} = req.body;
if(name && password && email) {
console.log('you god damn right!');
res.json("you god damn right in response");
} else {
console.log('you are god damn wrong stupid idiot!');
res.status(422);
res.json("you are god damn wrong you stupid idiot in response");
}
user.findOne({email:email}).then((resolve,reject)=>{
if(resolve)
return res.status(422).json("user already exist yo");
const newUser = new user({ name, email, password });
newUser.save().then(() => {
res.json('saved user!!!!');
}).catch(err => {
console.log("there was a problem saving the user")});
}).catch(err => {
console.log(err);
})
});
module.exports = route;
mongoose
顺便问一下,库和库有什么区别MongoDB
?
解决方案
为了命名你的 mongodb 数据库,你应该把它放在你的连接字符串中,比如:
mongoose.connect('mongodb://localhost/myDatabaseName');
要命名您的收藏或禁用复数,您可以在此处找到答案:
var schemaObj = new mongoose.Schema(
{
fields:Schema.Type
}, { collection: 'collection_name'});
Mongoose是一个用于 MongoDB 和 Node.js 的对象数据建模 (ODM) 库。类似于 Sequelize (ORM),但用于文档 (NoSQL)。
推荐阅读
- javascript - 使用brainjs训练输出不在特定范围内
- ruby - array_words 数组中的值不正确
- javascript - 在模态表中显示 json 数据
- laravel-7 - Laravel 7 Socialite ORCID 包 500 内部服务器错误
- r - 我怎样才能改变我的情节,让它看起来不那么充实?
- c# - 丢弃方法的所有参数(删除未使用的参数'sender'和'args')
- monitoring - 如何在 Grafana 中计算 Windows Web 服务器的 CPU 利用率
- google-bigquery - 无需定义目标表就无法在大查询中调度脚本
- jquery - 在 jQuery 中包含超链接
- r - 如何在不修改的情况下在 R 数据框中将名称命名为行名