Как установить имя базы данных и имя коллекции в пн goose? - PullRequest
1 голос
/ 23 апреля 2020

Я создаю небольшую программу, которая подключается к MongoDB-Atlas. я создал соединение, схему, модель и создал документ. но почему-то имя моей БД - "test", а имя Collection - "users", но я не определил его в коде или в Atlas. Это имена по умолчанию? и как создать / переименовать БД и коллекцию.

код:

пользователь. js

const mon goose = require ('mon goose');

const SchemaObj = mon goose .Schema;

const userSchema = new SchemaObj ({

name : {
    type:String,
    require:true

},
email : {
    type:String,
    require:true
},
password: {
    type:String,
    require:true
}

}) ;

mon goose .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 rout = 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 = rout;

кстати, в чем разница между библиотеками mon goose и mongodb?

спасибо большое!

1 Ответ

0 голосов
/ 23 апреля 2020

Чтобы назвать свою базу данных mongodb, вы должны поместить ее в строку подключения, например:

mongoose.connect('mongodb://localhost/myDatabaseName');

Чтобы назвать свою коллекцию или отключить множественное число, вы можете найти ответ здесь:

Что такое Mon goose (Nodejs) правила множественного числа?

var schemaObj = new mongoose.Schema(
{
 fields:Schema.Type
}, { collection: 'collection_name'});

Mon goose - библиотека моделирования данных объектов (ODM) для MongoDB и Node.js. Аналогично Sequelize (ORM), но для документов (№ SQL).

...