我正在我的api上实现knex迁移,并计划在Heroku发布阶段(在新版本开始之前)运行它们。
有什么方法可以从我的def gradientDescent(x, y, theta, alpha, num_iter):
m = np.size(x,axis=0)
for i in range(num_iter):
theta = theta - (alpha / m) * np.dot(x.T,(np.dot(x, theta) - y))
return theta
theta = gradientDescent(X, y, [0,0], 0.01, 1500)
theta
# array([-3.81920963, 1.22926242])
获取Strapi的已解析配置吗?
这样的事情会很棒:
knexfile.js
问题是我不想复制我的配置,并且要求const strapi = require('strapi');
strapi.config.database;
不会给我“已解析”的结果。意味着config/environments/xxx/database.json
不会被插值。
答案 0 :(得分:0)
解决该问题的最简单方法是使用@Transactinal
,而不是使用process.env
。 Strapi配置只不过是派生常量,因此编写自己的脚本不会给启动trapi带来开销。我假设您正在使用heroku环境变量。如果变量在发布阶段不可用(例如Google App Engine gcp-build),则您需要使用strapi.config
或dotenv
之类的东西或我构建的东西{{3 }}(基于对象的环境加载)。
在使用trapi的bootstrap函数时,我遇到了类似的问题-我需要执行自己的迁移(在stradi land之外),因此我最终编写了自己的knex / bookshelf种子和迁移脚本,这些脚本是手动执行的(
另外,如果您想直接在trapi内部构建迁移脚本,kenv也可能有用。
答案 1 :(得分:0)
TLDR;
您可以通过以下方式获得Strapi的配置:
const strapi = require('strapi')({ serveAdminPanel: false });
strapi.load()
.then(() => {
const config = strapi.config.currentEnvironment;
});
但是您可以通过这种方式直接获取Strapi的knex实例:
const strapi = require('strapi')({ serveAdminPanel: false });
strapi.load()
.then(() => {
const knex = strapi.connections[
strapi.config.currentEnvironment.database.defaultConnection
];
// do anything with knex here
// like knex.migrate.latest();
});
-
我尝试首先获取配置,但是当我这样做时,我一直遇到连接错误,因此我设法直接获得了knex连接,一切开始正常工作!