我正在使用 docker 和 knex 构建节点/快速服务进行数据库交互。我有一个env_file(在 docker-compose 文件中定义)定义了一些环境变量。该应用程序正在正确读取它们,因为 aconsole.log(process.env.DATABASE_USER);将记录正确的值。
我按照 knex 文档设置了一个 knexfile,如下所示:
module.exports = {
development: {
client: 'pg',
connection: {
host: process.env.DATABASE_HOST,
port: process.env.DATABASE_PORT,
user: process.env.DATABASE_USER,
password: process.env.DATABASE_PASSWORD,
database: process.env.DATABASE_NAME_DEV,
},
migrations: {
directory: __dirname + '/db/migrations',
},
seeds: {
directory: __dirname + '/db/seeds',
},
},
};
Run Code Online (Sandbox Code Playgroud)
如果我将这些值硬编码到 knexfile 中,一切都很好。我可以连接到数据库、运行迁移等。
当我使用环境变量(如上)时,它们返回未定义。这是为什么?
更新:
我的 docker compose 文件api.env只是一个基本的 .env 文件:
version: '3.3'
services:
db:
container_name: db
build:
context: ./services/api/src/db
dockerfile: Dockerfile
ports:
- 5435:5432
environment: …Run Code Online (Sandbox Code Playgroud) 研究了 CSRF 令牌和 django 后,很明显,React 应用程序必须通过 django 渲染才能正常检索 CSRF 令牌(即注入到 DOM 中)
据我所知,我对此有异议的唯一原因是 Instagram 的 Web 应用程序使用了 Django 和 React;我发现它极不可能由 django 渲染——至少以传统方式渲染。
我意识到很难找到他们如何处理它的答案,但也许有人知道一种方法,无需使用 django 渲染非常大的企业级 React 应用程序即可实现此目的。
为了提供一些视角,我们的 React 应用程序位于与 django 支持的 API 不同的子域上的单独存储库和目录中。
我们已经在我能想到的每个领域寻求了建议,但尚未找到合适的解决方案,因此我感谢您提供的任何反馈
这是我当前的代码:
我的组件中的状态
this.state = {
name: '',
sample: '',
description: '',
isPublished: null,
};
Run Code Online (Sandbox Code Playgroud)
这是单选按钮的处理程序
_handleRadio(event) {
let value = true;
if (typeof event.currentTarget.value === 'string') {
(event.currentTarget.value === 'true' ? value = true : value = false );
}
this.setState({isPublished: value});
}
Run Code Online (Sandbox Code Playgroud)
最后这是我的单选按钮
<div className="radio">
<label><input type="radio" name="isPublished" value="true" onChange={this._handleRadio} />Yes</label>
</div>
<div className="radio">
<label><input type="radio" name="isPublished" value="false" onChange={this._handleRadio} />No</label>
</div>
Run Code Online (Sandbox Code Playgroud)
很抱歉格式不正确,将我的代码复制并粘贴到这里并没有那么好。当我试图修复它时,我把它弄得更糟了。
所以现在,状态正在改变,这正是我想要的。但是当我向我的 api 提交并发出 POST 请求时,isPublished 状态返回到 true。
这是我的提交处理程序
_handleSubmit(event) {
event.preventDefault();
event.stopPropagation();
const sampleObj = this.state;
console.log(sampleObj); …Run Code Online (Sandbox Code Playgroud) reactjs ×2
csrf ×1
django ×1
docker ×1
javascript ×1
knex.js ×1
migration ×1
node.js ×1
radio-button ×1