Мангуст не возвращает данные для второй коллекции - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть серверное приложение, которое не возвращает значений для одной из моих коллекций.

Моя функция запрашивает Монго для 3 коллекций.

, несмотря на то, что коллекция locationTypes содержит 5 документов, ни один из них не возвращается. Коллекции Location & Failure возвращают данные.

const Location = require('./models/Location');
const LocationType = require('./models/LocationType');
var locationPromise = Location.find();
var locationTypePromise = LocationType.find();
var failurePromise = Failure.find();

Promise.all([locationPromise, locationTypePromise, failurePromise])
    .then(values => res.json({ locations: values[0], locationTypes: values[1], failures: values[2] }))

Модели / Location.js

const mongoose = require('mongoose');
const LocationSchema = new mongoose.Schema({
  Description: String,
  Type: String,
  Parent: String
});

module.exports = mongoose.model('Location', LocationSchema);

Модели / LocationType.js

const mongoose = require('mongoose');
const LocationTypeSchema = new mongoose.Schema({
  Description: String
});

module.exports = mongoose.model('LocationType', LocationTypeSchema);

Может ли проблема быть связана с тем, что коллекция имеет составное имя?

1 Ответ

0 голосов
/ 17 сентября 2018

Эта проблема возникает из-за того, как Mongoose интерпретирует названия моделей.Когда вы присваиваете Mongoose имя модели, оно автоматически умножает его, чтобы найти соответствующее имя коллекции MongoDB.Простые слова, такие как location, легко умножаются на locations, но составное имя, такое как locationType, не может быть умножено на locationTypes без дополнительной информации.

const LocationTypeSchema = new mongoose.Schema({ Description: String }, { collection: "locationTypes" });

Добавление { collection: "locationTypes" }сообщает Mongoose, что схема LocationType должна быть сопоставлена ​​с коллекцией locationTypes.

См. официальную документацию Mongoose по этому .

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