Collection.find () работает только на определенных коллекциях - PullRequest
0 голосов
/ 07 ноября 2018

Я установил MongoDB с Express и Mongoose для связи с моим угловым приложением.

В настоящее время у меня возникает следующая проблема:

На данный момент существует 3 разные коллекции. Когда я пытаюсь перейти на Collection.find({}) на 2 из них, это работает отлично, но когда я пытаюсь получить записи 3-го, я всегда просто получаю пустой массив ("[]" НИКОГДА не определен или что-то всегда просто пустые скобки) ).

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

Итак, вот мой нерабочий код (спецификация не является проблемой ({name: 1, _id: 0}), я также пытался разными способами без него):

app.get('/api/retrieveCompany', async (req, res) => {
    Company.find({},{name: 1, _id: 0}, function(err, companies) {
        if(err) {
            res.status(500).json('Error')
        } else {
            console.log(companies)
            res.status(200).json(companies)
        }
    })
})

Код метода, который работает нормально :

app.get('/api/retrieveContent', async (req, res) => {
    Content.find({}, function(err, contents) {
        if(err) {
            res.status(500).json('Error')
        } else {
            console.log(contents)
            res.status(200).json(contents)
        }
    })
})

Остальная часть кода, используемого для этого метода:

Мангуста Схема (Компания):

const mongoose = require('mongoose')

const CompanySchema = new mongoose.Schema({
    name: String,
    description: String,
    boss: String,
})

const Company = mongoose.model('Company', CompanySchema)

module.exports = Company

Посвящение:

mongoose.connect('mongodb://localhost:27017/angulardb', { useNewUrlParser: true })
.then((err) => console.log('Mongoose up'))

const User = require('./models/users')
const Content = require('./models/content')
const Company = require('./models/company')

Схема мангуста (Содержимое) ( только для сравнения ):

const mongoose = require('mongoose')

const ContentSchema = new mongoose.Schema({
    subject: String,
    customer: String,
    task: String,
    date: Date,
    inCharge: String,
    comment: [String],
})

const Content = mongoose.model('Content', ContentSchema)

module.exports = Content

Ответ от CLI оболочки MongoDB:

> db.company.find({},{name: 1, _id: 0})
{ "name" : "IT Solutions" }
{ "name" : "Microsoft" }
{ "name" : "Company15" }
{ "name" : "New Company" }

1 Ответ

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

Согласно документации мангуста,

Mongoose по умолчанию создает имя коллекции, передавая модель имя для метода utils.toCollectionName. Этот метод множит название. Установите эту опцию, если вам нужно другое имя для вашего коллекция.

Но я видел, что название вашей коллекции в единственном числе. Вы можете переименовать свою коллекцию или использовать ее, чтобы использовать другое имя коллекции.

const CompanySchema = new mongoose.Schema({
    name: String,
    description: String,
    boss: String,
}, { collection: 'company' })

Надеюсь, это поможет вам.

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