简体   繁体   English

无法读取未定义 Express API 的属性“计数”

[英]Cannot read property 'count' of undefined Express API

When i call Create Option api it is working fine but when i call list api get error: Cannot read property 'count' of undefined Express (Node + MongoDB) API.here is my Option Controller File code.当我调用 Create Option api 时,它工作正常,但是当我调用 list api 时出现错误:无法读取未定义 Express(节点 + MongoDB)API 的属性“计数”。这是我的选项控制器文件代码。 i have Log DB.ProductDoption ,getting result but count function not working.我有 Log 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);
  }
};

collection.count is deprecated, and will be removed in a future version. collection.count 已弃用,将在未来版本中删除。 Use Collection.countDocuments or Collection.estimatedDocumentCount instead改用 Collection.countDocuments 或 Collection.estimatedDocumentCount

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM