如何在 Mongoose 中设置数据库名称和集合名称?
Posted
技术标签:
【中文标题】如何在 Mongoose 中设置数据库名称和集合名称?【英文标题】:How to set DB name and Collection name in Mongoose? 【发布时间】:2020-08-06 20:27:31 【问题描述】:我正在构建一个连接到 MongoDB-Atlas 的小程序。 我创建了一个连接、一个模式、一个模型并创建了一个文档。 但不知何故,我的数据库名称是“测试”,集合名称是“用户”,而我没有在代码或 Atlas 中定义它,这是默认名称吗?以及如何创建/重命名数据库和集合。
代码:
user.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);
app.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
库有什么区别?
【问题讨论】:
【参考方案1】:为了命名你的 mongodb 数据库,你应该把它放在你的连接字符串中,比如:
mongoose.connect('mongodb://localhost/myDatabaseName');
对于您的收藏命名或禁用复数,您可以在这里找到答案:
What are Mongoose (Nodejs) pluralization rules?
var schemaObj = new mongoose.Schema(
fields:Schema.Type
, collection: 'collection_name');
Mongoose 是用于 MongoDB 和 Node.js 的对象数据建模 (ODM) 库。类似于 Sequelize (ORM),但用于文档 (NoSQL)。
【讨论】:
以上是关于如何在 Mongoose 中设置数据库名称和集合名称?的主要内容,如果未能解决你的问题,请参考以下文章
使用 mongoose 在 mongodb 中设置集合的到期时间