我正在使用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;
};
关于什么可能导致问题的任何建议?
答案 0 :(得分:2)
在模型文件的最后一行,更改为:
module.exports = Marker
然后在逻辑文件的开头,而不是const Marker = require("mongoose").model("Marker");
,只需要模型文件,例如:
const Marker = require(PATH_TO_THE_MARKER_MODEL_FILE);