我有一个具有以下结构的应用程序:
-MyApp
-backend
-app
+mongoose-models
+node_modules
index.js
package.json
-admin
+(lots of stuff)
-frontend
-app
+app_controllers
+node_modules
+public
+view
index.js
package.json"backend“文件夹是"admin”的节点应用。
"admin“是管理应用程序的公共文件夹,而"frontend”是访问者将看到的网站。
我要做的是从“前端/应用/控制器”上的控制器访问“后端”文件夹中的mongoose模式/模型。我尝试了像this这样的东西,但它没有解决我的问题。
任何帮助都将不胜感激。
发布于 2018-06-01 17:11:16
我遇到了同样的挑战,故意想要拆分两个应用程序的代码库,但在数据库中共享一个模式。
从另一个应用程序的路径中请求模型的问题在于:
require('mongoose');Require将在另一个应用程序的node_modules中使用mongoose,而在我的例子中,这甚至不是相同的版本。它不会抛出任何错误,但任何查询/更新/保存都不会执行回调。
我通过强制要求应用程序路径中的mongoose模块解决了这个问题。
在应用程序的开始处,添加以下内容以设置应用程序的基目录:
global.__basedir = __dirname;我知道使用全局变量是不受欢迎的,但我认为这是一个很好的例外。
然后在模型中,像这样要求mongoose:
var mongoose = require(global.__basedir + '/node_modules/mongoose');global.__basedir的另一种选择是在环境中设置应用程序的路径目录,并按如下方式使用它:
var mongoose = require(process.env.appdir + '/node_modules/mongoose');https://stackoverflow.com/questions/40594590
复制相似问题