Не удается прочитать свойство 'count' неопределенного Express API - PullRequest
1 голос
/ 25 февраля 2020

Когда я вызываю API-интерфейс Create Option, он работает нормально, но когда я вызываю API-интерфейс списка вызовов, появляется ошибка: Не удается прочитать свойство 'count' из неопределенного Express (Node + MongoDB) API. Вот мой код файла Option Controller File. У меня есть журнал DB.ProductDoption, получение результата, но функция подсчета не работает.

const _ = require('lodash');
const Joi = require('joi');

exports.create = async (req, res, next) => {
  try {
    const validateSchema = Joi.object().keys({
      name: Joi.string().required(),
      key: Joi.string().required(),
      description: Joi.string().allow(['', null]).optional(),
      options: Joi.array().items(Joi.object().keys({
        key: Joi.string().required(),
        displayText: Joi.string().required()
      })).required()
    });
    const validate = Joi.validate(req.body, validateSchema);
    if (validate.error) {
      return next(PopulateResponse.validationError(validate.error));
    }

    const key = Helper.String.createAlias(req.body.key);
    console.log(DB.ProductDoption);
    const count = await DB.ProductDoption.count({ key });
    if (count || validate.value.key === '_custom') {
      return next(PopulateResponse.error({
        message: 'Please add unique name for key'
      }));
    }

    const option = new DB.ProductDoption(validate.value);
    await option.save();
    res.locals.option = option;
    return next();
  } catch (e) {
    return next(e);

  }
};


exports.list = async (req, res, next) => {
  const page = Math.max(0, req.query.page - 1) || 0; // using a zero-based page index for use with skip()
  const take = parseInt(req.query.take, 10) || 10;

  try {
    const query = Helper.App.populateDbQuery(req.query, {
      text: ['name', 'key', 'description']
    });

    const sort = Helper.App.populateDBSort(req.query);
    const count = await DB.ProductDoption.count(query);
    const items = await DB.ProductDoption.find(query)
      .collation({ locale: 'en' })
      .sort(sort).skip(page * take)
      .limit(take)
      .exec();

    res.locals.optionList = {
      count,
      items
    };
    next();
  } catch (e) {
    next(e);
  }
};

1 Ответ

1 голос
/ 26 февраля 2020

collection.count устарела и будет удалена в следующей версии. Используйте взамен Collection.countDocuments или Collection.estimatedDocumentCount

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