node.js - 更新的 API 在本地工作,但在 Heroku 上不起作用,即使它使用更新的代码
问题描述
我正在重新访问一个旧的笔记项目,并更新了来自发布请求的响应,以包含新笔记的 id,而不是像以前那样只是一条带有“已创建新笔记”的消息。我将更改推送到 github,heroku 自动部署构建成功。
我的问题是,{id: 'id', message: 'message'}
当我在本地测试 api 时,我得到了正确的响应,但是 heroku 给了我旧的响应,{message: 'message'}
就像它使用旧版本的 api 一样。据我所知,没有错误状态或错误消息,并且构建使用来自 git 的最新代码。知道为什么会这样吗?我觉得我可能遗漏了一些明显的东西。
更新后的 api 调用如下所示:
server.post('/api/notes', (req, res) => {
const note = req.body;
knex
.insert(note)
.into('notes')
.then(response => {
res
.status(201)
.json({ id: response[0], message: 'New note successfully created' });
})
.catch(err => {
res.status(500).json({ message: 'Error creating note' });
});
});
旧代码是相同的,只是 json 响应没有 'id' 属性。
也只是为了显示 heroku 正在使用最新的代码:
更新:所以我对测试做了一些小改动,实际上它们确实得到了更新。我做了一个 console.log 并意识到 response[0] 变量从 heroku 日志中打印为未定义,但它在本地打印得很好。我不知道是什么原因造成的。
解决方案
好的,所以我实际上解决了这个问题。原来我需要编辑我的.insert(note)
调用看起来像这样.insert(note, ['id'])
,然后将 json 发送为{id: response[0].id, message: ''}
. 本地响应是返回 id,而在 heroku 上它返回的是完全不同的东西。我还意识到我使用的本地数据库是 sqlite3 而 heroku 使用的是 postgres。我猜在使用一个或另一个时返回的响应变量是不同的。
推荐阅读
- ionic-framework - 如何限制用户从 Ionic 的项目列表中仅选择一项
- date - SSRS 2008 - 为什么某些月份没有返回矩阵中的结果,但结果显示在 SQL 查询窗格中?
- python - 错误系统调用产生 C:\Windows\system32\cmd.exe
- ios - 如何在uitextfield编辑的边框线上添加占位符文本
- r - R从互联网加载数据并同时删除列
- java - 为什么要在另一个列表中投射列表
- jquery - 带有经典 ASP 的 FullCalender.io
- maven - Maven:如何管理从一个子模块到另一个子模块的依赖关系
- .net - 如何配置交换槽功能?目前在部署后我仍然看到旧版本的网络应用程序
- android - 半透明Activity下的Activity缺少onSaveInstanceState调用