NodeJS,Passport和Mongoose - 子文档问题

时间:2015-04-01 07:01:02

标签: node.js mongodb express mongoose

我已经开发了几个月的应用程序,它终于到了我准备部署它的阶段。

在我的开发环境中一切正常,我没有任何问题。

我使用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。我不确定它是我的网络服务器,应用程序的问题还是数据库中的错误。

下一步是将数据库移至应用程序服务器,以查看是否可以缩小此问题。

感谢您的帮助!

0 个答案:

没有答案