Mongoose возвращает пустой массив из моей базы данных при выполнении запроса Model.find () - PullRequest
0 голосов
/ 14 ноября 2018

Я посмотрел на этот популярный вопрос , но, похоже, он не решил мою проблему, поэтому я собираюсь опубликовать это.

В настоящее время у меня есть сервер express.jsфайл с использованием mongoose, который продолжает возвращать пустой массив.Я понятия не имею, может ли это произойти из-за асинхронной проблемы, и я не знаю, что я могу использовать, чтобы указать, что я подключен к своей базе данных.

const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
const PORT = process.env.PORT || 8080;


//Mongoose stuff
mongoose.connect('mongodb+srv://excelsiorAdmin:Mysecretpassword@excelsiorcluster-zakfd.mongodb.net/test?retryWrites=true', { useNewUrlParser: true, dbName: 'excelsiorDB'});
const dbConnection = mongoose.connection;

dbConnection.on('error', console.error.bind(console, 'connection error:'));
dbConnection.once('open', function() {
    console.log('connected to the database');

    let charSchema = new mongoose.Schema({
        imageURL: String,
        company: String,
        name: String,
        civName: String,
        alignment: String,
        firstDebut: String,
        abilities: Array,
        teams: Array,
        desc: String
    });

    let Char = mongoose.model('Char', charSchema, 'chars');

    //root
    app.get('/', (req, res, next) => res.send('Welcome to the API!'));

    //get all characters
    app.get('/chars', (req, res, next) => {
        console.log('getting all characters');
        Char.find(function (err, chars) {
            if (err) {
                res.status(404).send(err);
                console.log('there was an error');
              };
              console.log(chars);
              res.send(chars);
        });
    });

    //get heroes
    app.get('/chars/heroes', (req, res, next) => {
        Char.find({alignment: "Hero"}, function (err, chars) {
            if (err) {
                res.status(404).send(err);
            };
            res.send(chars);
        });
    });

});

app.listen(PORT, () => console.log(`This API is listening on port ${PORT}!`));

1 Ответ

0 голосов
/ 15 ноября 2018

mongoose.model установит нужную коллекцию равной строчной форме имени модели в нижнем регистре.

let Char = mongoose.model('Char', charSchema);

Это будет искать коллекцию "chars".Однако, если база данных, к которой вы подключаетесь, не имеет коллекции с тем же именем, что и у мангуста по умолчанию, она вернет результаты из несуществующей коллекции.Чтобы убедиться, что он попадает в нужную коллекцию, если они не совпадают, вам нужно вручную ввести имя коллекции в качестве третьего параметра:

let Char = mongoose.model('Char', charSchema, "excelsiorCollection");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...