如何在Foxx中的路由器功能之外运行javascript

时间:2017-10-19 12:32:08

标签: arangodb

我想为dev和prod生产做一些变量切换,但似乎If..else不在路由器代码之外运行。我做错了吗?

//Other variable declare above
//This one wont run
if(isDev){
coll=db._collection("DevColl")
}
else{
coll=db._collection("ProdColl");
}
//////////////////////////////////
//Later use coll in the router code
router.get("/"),function{
}

1 个答案:

答案 0 :(得分:0)

请注意,ArangoDB启动了多个Javascript V8上下文(它们称为“隔离”),而NodeJS只有一个。

在ArangoDB的生命周期中,可能会产生新的隔离,而旧的隔离会被刷新。隔离中未被引用的全局对象可以删除以节省内存。

因此,没有直接方法可以在javascript中进行全局设置。

但是,有三种方法可以实现这一目标:

  • 可以切换状态的集合(可能在生产中也很慢……)
  • 通过process.env使用系统环境,然后必须在启动ArangoDB的初始化脚本中进行设置。
  • 安装您的foxx服务的另一个实例,通过module.context.collection()
  • 访问集合