NodeJS/MongoDB:如何从控制器访问模型中的字段?

问题描述 投票:0回答:1

我想从我的控制器直接访问模型中存在的

character
枚举数组,这样我就不必在控制器中对数组进行硬编码。有没有一种简单的方法可以做到这一点,或者我应该将数组存储为模型中的变量,然后将其与模型一起导出?

testModel.js:

    const mongoose = require("mongoose");
    const testSchema = new mongoose.Schema({
      character: {
        type: String,
        enum: [
          "mario",
          "luigi",
          "link",
          "samus"
        ],
        required: [true, "Please provide a character"],
      },
    });

const Savestate = mongoose.model("Test", testSchema);
module.exports = Test;

控制器.js

exports.getCharacterSavestates = catchAsync(async (req, res, next) => {

// Instead of this array I want to do something like: const characters = model.character.enum
  const characters = [
    "mario",
    "luigi",
    "link",
    "samus",
  ]; 

  if (!characters.includes(req.params.character)) {
    return next(new AppError("Character name invalid"), 400);
  }

  const documents = await Model.find({ character: req.params.character });
  res.status(200).json({
    status: "success",
    results: .length,
    data: { data: documents },
  });
});

node.js mongodb express mongoose
1个回答
0
投票

使用 testSchema.paths.character.options.enum 检索该枚举。

示例:

或者您可以定义分隔的枚举数组并在多个地方使用它..

© www.soinside.com 2019 - 2024. All rights reserved.