Как вызвать данные из MongoDB с помощью функции find ()? - PullRequest
1 голос
/ 17 октября 2019

Я начинаю с Node.js / MongoDB и пытаюсь получить данные из БД.

Нет ошибок консоли, поэтому я не уверен, что с этим не так. Я сомневаюсь, что я делаю что-то не так с find() в api.js

Это Team.json. Обычно это данные, которые уже импортированы в MongoDB

{"Teams": [
{"name": "Real Madrid", "City": "Madrid", "conference":"rmd"},
{"name": "Liverpool", "City": "Liverpool", "conference":"liv"},
{"name": "Bayern Munich", "City": "Munich", "conference":"mun"} ]}

Это api.js, где я создаю свой запрос GET

const express = require('express')
var router = express.Router({mergeParams: true});
const Team = require('../models/Team')

router.get('/team', (req, res) => {

    Team.find(null)
    .then(data => {
        res.json({
            confirmation: 'success',
            data: data
        })
    })
    .catch(err => {
        res.json({
            confirmation: 'fail',
            message: err.message
        })
    })

})

module.exports = router;

Это app.js, где я создалЭкспресс приложение и вызов API

let express = require('express')

const config = {
    views: 'views',
    static: 'public',
    db: {
    url: 'mongodb://localhost/footballdb',
    type: 'mongo', 
    onError: (err) => {
        console.log('DB connection failed')
     },
     onSuccess: () => {
         console.log('DB connected')
     }

    }
}

let app = express(config)
const api = require('./routes/api')
app.use('/api', api )


app.listen(4005, () => {
    console.log('Example app is listening on port 4005!')
})



module.exports = app;

РЕДАКТИРОВАТЬ:

Может быть, это также будет полезно: модель / Team.js

const mongoose = require('mongoose')

const Team = new mongoose.Schema({
 name:{type: String, default: ''},
 City:{type: String, default: ''},
 conference: {type: String, default:''}
})


module.exports = mongoose.model('Team',Team)

Я ожидаю увидеть данныеиз файла JSON в моем браузере под http://localhost:4005/api/team, но я вижу только следующее: http://prntscr.com/pkkgmt

Мой MongoDB работает локально, и я понятия не имею, что я делаюнеправильно?

1 Ответ

0 голосов
/ 17 октября 2019

Лучше отправить пустой объект для поиска.

Можете ли вы попробовать следующий код и сказать, что происходит?

const express = require('express')
var router = express.Router({mergeParams: true});
const Team = require('../models/Team')

router.get('/team', (req, res) => {

    Team.find({})
    .then(data => {
      console.log(data);

        res.json({
            confirmation: 'success',
            data: data
        })
    })
    .catch(err => {
      console.log(err);
        res.json({
            confirmation: 'fail',
            message: err.message
        })
    })

})

module.exports = router;

Также импортированные документы в коллекцию команд не совпадаютформа командной схемы. В вашей коллекции команд есть свойство родительской команды.

Коллекции должны быть в этом формате:

https://prnt.sc/pkp9bt

Пример данных:

{
    "_id" : ObjectId("5da8a15fc0f0eb20a0e425d6"),
    "name" : "Bayern Munich",
    "City" : "Munich",
    "conference" : "mun"
}

{
    "_id" : ObjectId("5da8a12dc0f0eb20a0e425d5"),
    "name" : "Liverpool",
    "City" : "Liverpool",
    "conference" : "liv"
}

{
    "_id" : ObjectId("5da8a108c0f0eb20a0e425d4"),
    "name" : "Real Madrid",
    "City" : "Madrid",
    "conference" : "rmd"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...