正在尝试实现控制器文件



所以,我正在尝试制作一些instagram克隆。。。只是为了在MERN堆栈中练习。我实际上是在学习一个教程。问题是教程教我在server.js中制作几乎所有的东西。由于我认为它不干净和有组织,我试图对我的代码进行一些更改。首先,我创建了一个routes.js文件。然后我用猫鼬做了一个模型。架构({}(来创建我的对象。这里的问题是,我想实现一个控制器文件,使routes.js更加干净。我的控制器代码:


const Post = mongoose.model("Posts");
export default function store(req, res) {
const body = req.body;
Post.create(body, (err, data) => {
if (err) {
res.status(500).send(err);
} else {
res.status(201).send(data);
}
});
}

错误:Route.post((需要一个回调函数,但得到了一个[object Undefined]在Route。[邮寄]

我的路线代码:

import express from "express";
import PostController from "./controllers/PostController.js";
const routes = express.Router();
routes.post("/upload", PostController.store);

我的型号代码:

import mongoose from "mongoose";
const PostSchema = new mongoose.Schema({
caption: String,
user: String,
image: String,
comments: [],
});
export default mongoose.model("Posts", PostSchema);

我对这个大帖子感到抱歉。但我希望有人能帮我哦,另一个问题。。。有没有更好的方法让它更有条理?事实上,我不知道这是否是一个好的选择。谢谢大家!

我认为问题在于您试图访问导入的东西上名为store的属性。

请注意,您使用export default function导出后控制器。这意味着当您导入它时,导入本身将是该函数。您不会得到一个属性为store的对象。您的store函数后控制器。

当您编写PostController.store时,您基本上是在尝试访问post-controller函数上名为store的属性。但该函数没有这样的性质。它您正在寻找的属性。

尝试执行以下操作:

routes.post("/upload", PostController);

最新更新