Хорошей практикой является использование операций в качестве метода в схеме Мангуста - PullRequest
0 голосов
/ 14 января 2019

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

Что я делаю, это: *

/ * myModel.js * /

const mongoose = require('mongoose'),
      Schema = mongoose.Schema;

// 1. Создана моя схема

const mySchema = new Schema({
  name: String,
  age: Number
});

// 2. Хотите использовать операцию выборки // Но я создал методы для этого

mySchema.methods.fetchById = async function(){
  return await myModel.findById(this._id);
}

// 3. Созданная модель

module.exports = myModel = mongoose.model('myModel', mySchema);

/ * myController.js * /

const User = require('./myModel');

router.get('user/:id', async (req, res, next) => {
  try {
    let user = new User({
      _id: req.params.id
    })
    res.status(200).json(await user.fetchById());
  } catch (err) {
    next(err);
  }
})

1 Ответ

0 голосов
/ 15 января 2019

Не рекомендуется создавать метод экземпляра для извлечения объекта экземпляра, поскольку:

  1. сбивает с толку, может быть подвержен ошибкам
  2. это против Мангуста API дизайн (см. 1)
  3. Вы должны создать новый объект, для этого требуется больше памяти
  4. в этом случае требуется больше строк кода, вам нужно изучить новый API, вы можете вносить ошибки, и он не добавляет никаких улучшений

Вы должны просто использовать статический метод findById в вашем контроллере:

const User = require('./myModel');

router.get('user/:id', async (req, res, next) => {
  try {
    res.status(200).json(await User.findById(req.params.id));
  } catch (err) {
    next(err);
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...