javascript - 尝试实现控制器文件
问题描述
所以,我正在尝试制作一些 Instagram 克隆……只是为了在 MERN 堆栈中进行练习。我实际上正在跟进一个教程。问题是本教程教导在 server.js 中制作几乎所有内容。因为我不认为它是干净和有组织的,所以我试图对我的代码进行一些更改。首先,我创建了一个 routes.js 文件。然后我用 mongoose.Schema({}) 创建了一个模型来创建我的对象。这里的问题是我想实现一个控制器文件以使 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() 需要回调函数,但在 Route 获得了 [object Undefined]。[作为帖子]
我的路线代码:
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
,您基本上是在尝试访问store
在您的后控制器函数上调用的属性。但是那个函数没有这样的属性。这是您正在寻找的财产。
请尝试执行以下操作:
routes.post("/upload", PostController);
推荐阅读
- ios - 如何为navigationItem titleView设置accessibilityIdentifier?
- javascript - Node.js -liquibase 不是函数
- c++ - 使用 clang CXXMethodDecl 从 .cpp 文件中获取类方法定义
- python - Django 在 form.save() 之前引发 IntegrityError 异常
- flutter - Flutter 根据视频 id 动态更改视频源
- django - Django 框架
- jdbc - 查询 kerberosed 数据库
- reactjs - Html 在 Redux 表单字段上放置固定文本
- ios - 如何解析本地 Json 并从 Json 对象 url 下载图像并将图像路径更新为 Model 类?
- r - 如何通过在主面板中输出注意文本来避免错误消息