MissingSchemaError:尚未为模型“ Marker”注册架构

时间:2018-12-17 21:43:35

标签: javascript node.js mongoose

我正在使用Javascript,Node,CSS,HTML和Google Maps进行项目。 我最近收到此错误=> MissingSchemaError:尚未为模型“ Marker”注册架构。我已经尽力解决了所有问题,但似乎无济于事。

这是我的标记的模型:

const mongoose = require("mongoose");
const mongo = require("../connectors/mongo");
const Joi = require("Joi");

const markerSchema = new mongoose.Schema(
  {
    _id: String,
    lat: { type: Number, required: true },
    lng: { type: Number, required: true },
    date: { type: Date, default: Date.now, required: false },
    pictures: { type: [String], required: true },
    user_id: { type: String, required: true }
  },
  { timestamps: true }
);

/* Create the model from the schema. */
const Marker = mongoose.model("Marker", markerSchema);
exports.Marker = Marker;

对于我的路线,我有一个文件夹路线,其中包含一个文件夹标记和一个供用户使用的文件夹。 文件夹标记具有以下三点: 文件夹用户是相似的。 handlers.js:

const Marker = require("mongoose").model("Marker");

const find = (req, res) => {
  ...
};

...
module.exports = {
  create,
  deletion,
  find,
  findById,
  update
};

index.js:

const checkAuth = require("../../middlewares/check-auth.js");
const handlers = require("./handlers");
const validators = require("./validators");

module.exports = router => {
  router.get("/markers", checkAuth, validators.find, handlers.find);
  router.post("/markers", checkAuth, validators.create, handlers.create);
  router.get("/markers/:id", checkAuth, validators.find, handlers.findById);
  router.put("/markers/:id", checkAuth, validators.update, handlers.update);
  router.delete(
    "/markers/:id",
    checkAuth,
    validators.deletion,
    handlers.deletion
  );
  return router;
};

和validators.js

const { celebrate, Joi } = require("celebrate");

const find = celebrate({
  ...
});

...

module.exports = {
  find,
  findOne,
  create,
  update,
  deletion
};

文件夹路由还具有一个index.js:

const markers = require("./markers");
const users = require("./users");

const resourceRoutes = [markers, users];

module.exports = router => {
  resourceRoutes.forEach(routes => routes(router));
  return router;
};

关于什么可能导致问题的任何建议?

1 个答案:

答案 0 :(得分:2)

在模型文件的最后一行,更改为:

module.exports = Marker

然后在逻辑文件的开头,而不是const Marker = require("mongoose").model("Marker");,只需要模型文件,例如:

const Marker = require(PATH_TO_THE_MARKER_MODEL_FILE);