node.js - 错误:Route.get() 需要回调函数,但得到了 [object Undefined]
问题描述
我正在尝试使用 Express 作为我的后端创建一个食谱搜索应用程序,并且当我启动我的服务器时,我从我的路由器文件中收到标题中的错误消息。在我的路由器遵循与此处相同的项目之前,我已经制作了项目,但由于某种原因,我不断收到错误,我不知道为什么。下面我将代码粘贴到我的控制器、助手和路由文件中:
控制器:
// import model and users controller
const Recipe = require('../models/recipe');
const usersController = require('../controllers/users-controller');
// initiate controller object
const recipesController = {}
// send API data
recipesController.sendApiRecipe = (req, res) => {
res.json({
message: `recipe returned`,
recipe: res.locals.recipe,
})
}
// show all favorited recipes
recipesController.index = (req, res, next) => {
Recipe.findByUser(req.user.id)
.then(recipe => {
res.json({
message: 'rendering favorites',
data: { recipe },
})
}).catch(next)
}
// create favorite recipe
recipesController.create = (req, res) => {
console.log(req.body, 'from create/recipesController')
Recipe.create({
title: req.body.title,
diet: req.body.diet,
calories: req.body.calories,
servings: req.body.servings,
health: req.body.health,
ingredient: req.body.ingredient,
img: req.body.img,
link: req.body.link,
user_id: req.user.id,
}).then(recipe => {
res.json({
message: 'successfully added',
data: { recipe }
})
}).catch(err => {
console.log(err)
res.status(500).json({error: err})
})
}
// delete favorite recipe
recipesController.delete = (req, res, next) => {
Recipe.destroy(req.params.id)
.then(() => {
res.json({
message: 'successfully deleted recipe',
})
}).catch(next)
}
export default recipesController;
帮手:
// import dependencies
require('isomorphic-fetch')
require('dotenv').config()
function getRecipes(req, res, next) {
// fetch URL
fetch(`https://api.edamam.com/search?q=${req.params.search}&app_id=${process.env.APP_ID}&app_key=${process.env.APP_KEY}&from=0&to=30`)
.then(res => res.json())
// use res.locals to attach data to repsonse object
.then(fetchRes => {
// set fetched results to res.locals
res.locals.recipe = fetchRes
next()
})
}
// export function
module.exports = {
getRecipes: getRecipes,
}
路线:
// import dependencies
const express = require('express')
const recipeHelpers = require('../services/recipes/recipe-helpers')
const recipesController = require('../controllers/recipes-controller')
const recipesRouter = express.Router()
recipesRouter.get('/:search', recipeHelpers.getRecipes, recipesController.sendApiRecipe)
recipesRouter.post('/create', recipesController.create)
module.exports = recipesRouter;
如果我应该提供任何其他信息,请告诉我,我一定会跟进我在进一步排除故障时遇到的任何发现。提前感谢您的帮助!
解决方案
我刚刚意识到我没有正确导出我的控制器,并解决了这个问题。谢谢!
推荐阅读
- javascript - 从打字稿对象中查找具有填充值的属性名称
- c++ - 如何为 QListIterator 使用声明自定义 typedef
- python-3.x - 更改列表中的对象变量
- mongodb - 如何使用 AWS DocDb 配置 Symfony?
- devise - Rails 设计忘记密码,发送令牌,但密码更改失败
- react-native - 无法从“node_modules/expo/AppEntry.js”解析“../../App”
- word2vec - word2vec评估结果解读
- python-2.7 - 使用 Python 从 OSM XML 中提取地址、城市、纬度和经度
- java - 如何在java中处理xml内容中的标签
- python - 数组[:, 0:-1] = 数组[:][0:-1]?