gpt4 book ai didi

node.js - 引用错误 : [tablename] is not defined | Node. js、Express、Axios、PostgreSQL

转载 作者:行者123 更新时间:2023-12-03 22:38:51 24 4
gpt4 key购买 nike

我正在尝试构建一个 Web 应用程序,但在数据库连接方面我确实遇到了问题。

我目前正在使用他的教程:

https://scotch.io/tutorials/getting-started-with-node-express-and-postgres-using-sequelize
我的客户端和服务器都在工作。

但现在我必须做数据库访问。出于这个原因,我使用 Postman 来尝试我的 POST 和 GET 语句。

每次当我尝试以下 GET 语句时:

localhost:8000/api/tools



我只是得到

ReferenceError: Tools is not defined              
   at list (server\controllers\tools.js:17:5)
   at Layer.handle [as handle_request] (server\node_modules\express\lib\router\layer.js:95:5)
   at next (server\node_modules\express\lib\router\route.js:137:13)
   at Route.dispatch (server\node_modules\express\lib\router\route.js:112:3)



而且我真的不明白为什么它总是说“未定义工具”。
我有一个名为“public”的数据库方案。
所以也许这可能是一回事?
我也尝试将数据库设置为 public.[DATABASENAME] 但它没有改变任何事情。

我希望你们能帮助我,我已经很好地描述了这个案例。

我的文件看起来像这样:

/server/config/config.json
{
"development": {
"username": "[USERNAME]",
"password": "[PASSWORD]",
"database": "testdb",
"host": "localhost",
"port": [PORT],
"dialect": "postgres"
}

/routes/index.js
const toolsController = require('../controllers').tools;
const toolitemsController = require('../controllers').toolitems;

module.exports = (app) => {
app.get('/api', (req, res) => res.status(200).send({
message: 'Welcome to the tools API!',
}));

app.post('/api/tools', toolsController.create);
app.get('/api/tools', toolsController.list);
app.get('/api/tools/:toolId', toolsController.retrieve);
app.put('/api/tools/:toolId', toolsController.update);
app.delete('/api/tools/:toolId', toolsController.destroy);

app.post('/api/tools/:toolId/items', toolitemsController.create);
app.put('/api/tools/:toolId/items/:toolitemId', toolitemsController.update);
app.delete(
'/api/tools/:toolId/items/:toolitemId', toolitemsController.destroy
);
app.all('/api/tools/:toolId/items', (req, res) => res.status(405).send({
message: 'Method Not Allowed',
}));
};

/server/controllers/tools.js
const tool = require('../models').tool;
const toolitem = require('../models').toolitem;

module.exports = {
create(req, res) {
return Tools
.create({
tool_id: req.body.tool_id,
tool_name: req.body.tool_name,
status: req.body.status
})
.then((tools) => res.status(201).send(tools))
.catch((error) => res.status(400).send(error));
},

list(req, res) {
return Tools
.all()
.then(tools => res.status(200).send(tools))
.catch(error => res.status(400).send(error));
},
};

的编辑版本/server/controllers/tools.js
const tools = require('../models').tools;
const toolitem = require('../models').toolitem;

module.exports = {
create(req, res) {
return tools
.create({
tool_id: req.body.tool_id,
tool_name: req.body.tool_name,
status: req.body.status
})
.then((tools) => res.status(201).send(tools))
.catch((error) => res.status(400).send(error));
},

list(req, res) {
return tools
.all()
.then(tools => res.status(200).send(tools))
.catch(error => res.status(400).send(error));
},
/*
list(req, res) {
return tool
.findAll({
include: [{
model: toolitem,
as: 'toolitems',
}],
order: [
['createdAt', 'DESC'],
[{ model: toolitem, as: 'toolitems' }, 'createdAt', 'ASC'],
],
})
.then((tools) => res.status(200).send(tools))
.catch((error) => res.status(400).send(error));
},*/

retrieve(req, res) {
return tools
.findById(req.params.toolId, {
include: [{
model: toolitem,
as: 'toolitems',
}],
})
.then((tools) => {
if (!tools) {
return res.status(404).send({
message: 'tools Not Found',
});
}
return res.status(200).send(tools);
})
.catch((error) => res.status(400).send(error));
},

update(req, res) {
return tools
.findById(req.params.toolId, {
include: [{
model: toolitem,
as: 'toolitems',
}],
})
.then(tools => {
if (!tools) {
return res.status(404).send({
message: 'tools Not Found',
});
}
return tools
.update({
title: req.body.title || tool.title,
})
.then(() => res.status(200).send(tools))
.catch((error) => res.status(400).send(error));
})
.catch((error) => res.status(400).send(error));
},

destroy(req, res) {
return tools
.findById(req.params.toolId)
.then(tools => {
if (!tools) {
return res.status(400).send({
message: 'tool Not Found',
});
}
return tools
.destroy()
.then(() => res.status(204).send())
.catch((error) => res.status(400).send(error));
})
.catch((error) => res.status(400).send(error));
},
};

最佳答案

您是否创建了工具模型?当我们忘记创建模型时,此错误非常相似。
node_modules/.bin/sequelize model:generate --name Tools --attributes field1:string,field2:string,field3:integer
当我们使用 Sequelize 时,我们需要创建一个模型,然后运行迁移。

按照文档:http://docs.sequelizejs.com/manual/tutorial/migrations.html

关于node.js - 引用错误 : [tablename] is not defined | Node. js、Express、Axios、PostgreSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53742310/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com