我已经开发了几个月的应用程序,它终于到了我准备部署它的阶段。
在我的开发环境中一切正常,我没有任何问题。
我使用Nodejs,Express和MongoDB与Mongoose。
我在三台服务器上部署 - 反向代理Nginx服务器 - 运行我的应用程序的服务器 - 数据库服务器。
开发和实时服务器上的mongoDB和节点版本相同。
所有这些服务器都运行Ubuntu 14.10并且都是最新的安装。
正如其他问题所示,我在Express之前加载了mongoose。
问题是,当我注册已部署的系统时,我的应用程序崩溃,返回以下错误。
/Project/node_modules/mongoose/lib/types/embedded.js:220
throw new Error(msg);
^
Error: Unable to invalidate a subdocument that has not been added to an array.
at EmbeddedDocument.$isValid (/Project/node_modules/mongoose/lib/types/embedded.js:220:11)
at /Project/node_modules/mongoose/lib/document.js:1022:17
at process._tickCallback (node.js:355:11)
我已检查过数据库,但未在我的在线版本中添加注册数据。所以我从我的开发版本中尝试了它。如果我将数据连接字符串指向在线数据库,我可以从开发版本添加到数据库。
但是,当我尝试从那里登录时,我提交了我的登录表单,并将它们重定向到主页。我想知道是否存在从mongodb传递数据的问题,或者这是我的nginx设置的问题,如下所示:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
server_name localhost;
location / {
proxy_pass http://IP_ADDRESS:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
任何有关正确方向的帮助或观点都将受到极大的赞赏。我迷失了,不再能够脱离这一点了google-foo。我不确定它是我的网络服务器,应用程序的问题还是数据库中的错误。
下一步是将数据库移至应用程序服务器,以查看是否可以缩小此问题。
感谢您的帮助!