我正在尝试构建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));
},
};
答案 0 :(得分:0)
您是否创建了工具模型?当我们忘记创建模型时,此错误非常相似。
node_modules/.bin/sequelize model:generate --name Tools --attributes field1:string,field2:string,field3:integer
使用Sequelize时,我们需要创建一个模型,然后运行迁移。
遵循文档:http://docs.sequelizejs.com/manual/tutorial/migrations.html
答案 1 :(得分:0)
问题:
ReferenceError:未定义工具
In [2468]: df.value2 = df['value2'].apply(str) In [2494]: res = df.groupby('value1')['value2'].apply(lambda x:','.join(x)).reset_index() In [2498]: res['count'] = df.groupby('value1').size().reset_index()[0] In [2499]: res Out[2499]: value1 value2 count 0 1 1,4,5 3 1 2 3,1 2
问题本身说明,文件为tools.js,行号为17。
您已经在这里导入
at list (server\controllers\tools.js:17:5)
您正在使用
const tool = require('../models').tool;
解决方案:将其更改为
Tools.create(...