Получение образцов данных из MongoDB Atlas с помощью mongoose - PullRequest
0 голосов
/ 22 января 2020

Как видно из названия, я пытаюсь получить существующие данные, которые уже существуют в MongoDB Atlas. Данные взяты из данных примера mongoDB Atlas, и я использую базу данных sample_mflix. Я провел некоторое исследование и выяснил, что сначала я должен скопировать модель и назвать название коллекции.

В следующих случаях я попытался извлечь данные коллекции mov ie:

//Movie model
const mongoose = require('../db/mongoose')
//const mongoose = require('mongoose)

const moveiesSchema = new mongoose.Schema({
    plot:{
        type:String
    } ,
    genres:[{
        type:String
    }],
    runtime:{
        type:Number
    },
    cast:[{
        type: String
    }],
    num_mflix_comments:{
        type: Number
    },
    title:{
        type: String
    },
    countries:[{
        type: String
    }],
    released:{
        type: Date
    },
    directors:[{
        type: String
    }],
    rated:{
        type: String
    },
    awards:{
        wins:{
            type: Number
        },
        nominations: {
            type: Number
        },
        text: {
            type: String
        }
    },
    lastupdated:{
        type: String
    },
    year: {
        type: Number
    },
    imdb:{
        rating: {
            type: Number
        },
        votes:{
            type: Number
        },
        id:{
            type: Number
        }
    },
    type: {
        type: String
    },
    tomatoes:{
        viewer:{
            rating: {
                type: Number
            },
            numReviews:{
                type: Number
            },
            meter:{
                type: Number
            }
        },
        lastupdated: {
            type:Date
        }
    }


}, {collection: 'movies'});

const movies = mongoose.model('movies', moveiesSchema)

module.exports = movies

Вот мой маршрутизатор:

//sample_mflix-router.js 
const express = require('express')
const router = new express.Router()

const movies = require('../models/movies_model')



//Currently not working
router.get('/questions', (req, res) => {
    const data = movies.findById('573a1390f29313caabcd4135')
    console.log(data)

})


module.exports = router 

Idk, в чем проблема Я только что последовал за этим парнем: Получение данных NULL из коллекции MongoDB Atlas

и этого парня: Как получить данные из существующей базы данных MongoDB?

Я думал, что, возможно, я неправильно сделал модель, или, возможно, мой mon go URL также неверен. Вот мой код подключения URL-адреса

MONGODB_URI=mongodb+srv://<user>:<password>@cluster0-rebv7.mongodb.net/sample_mflix?retryWrites=true&w=majority

Я поменял test с sample_mflix, потому что прочитал в другом посте, что мне следует использовать имя базы данных вместо имени по умолчанию, заданного 'test'.

Когда я пытаюсь сделать запрос get, все, что я получаю, является нулем. Иди в чем проблема, так что я надеюсь, что один из вас, ребята, может помочь.

edit: Вот мой файл подключения:

mongoose.connect(process.env.MONGODB_URI, {
    useNewUrlParser: true,
    useUnifiedTopology: true,
    useFindAndModify: false,
    useCreateIndex: true
})

module.exports = mongoose

Я почти уверен, что он подключается к MongoDB Atlas, так как так говорится на странице кластера.

Ответы [ 3 ]

1 голос
/ 22 января 2020

Попробуйте это

router.get('/questions', async (req, res) => {
    const data = await movies.findById('573a1390f29313caabcd4135')
    console.log(data)

})

Или

router.get('/questions', (req, res) => {
    movies.findById('573a1390f29313caabcd4135')
    .then(data => {
         console.log(data)
     });
})
1 голос
/ 22 января 2020

findById - это asyn c функция, поэтому вам нужно использовать await / asyn c:

router.get('/questions',async (req, res) => {
   try{
    const data = await movies.findById('573a1390f29313caabcd4135')
    console.log(data)
    }catch(e){
     console.log(e) ;
    }


})




или вы можете использовать обещание:

router.get('/questions', (req, res) => {
      movies.findById('573a1390f29313caabcd4135')
             .then(data=>console.log(data)) 
             .catch(err=>console.log(err)

})




1 голос
/ 22 января 2020

Вы также меняли пароль и имя пользователя?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...