【发布时间】:2014-09-29 16:49:34
【问题描述】:
我有一个使用 Meteor 0.9 的网站。我已经在 OpenShift (http://www.truthpecker.com) 上部署了这个网站。
我遇到的问题是,当我转到我网站上的路径 (/discover) 时,有时(尽管并非总是如此)所需的数据不会被 Meteor 获取。相反,我收到以下错误:
在客户端:
WebSocket connection to 'ws://www.truthpecker.com/sockjs/796/3tfowlag/websocket' failed: Error during WebSocket handshake: Unexpected response code: 400
在服务器端:
Exception from sub rD8cj6FGa6bpTDivh Error: Match error: Failed Match.OneOf or Match.Optional validation
at checkSubtree (packages/check/match.js:222)
at check (packages/check/match.js:21)
at _.extend._getFindOptions (packages/mongo-livedata/collection.js:216)
at _.extend.find (packages/mongo-livedata/collection.js:236)
at Meteor.publish.Activities.find.user [as _handler] (app/server/publications.js:41:19)
at maybeAuditArgumentChecks (packages/livedata/livedata_server.js:1492)
at _.extend._runHandler (packages/livedata/livedata_server.js:914)
at _.extend._startSubscription (packages/livedata/livedata_server.js:764)
at _.extend.protocol_handlers.sub (packages/livedata/livedata_server.js:577)
at packages/livedata/livedata_server.js:541
Sanitized and reported to the client as: Match failed [400]
谁能帮我消除这个错误并让网站正常运行?不胜感激!
托尼
P.S.:我在使用 localhost 时从来没有遇到过这个错误。
编辑:
导致问题的行是这样的(第 41 行):
return Activities.find({user: id}, {sort: {timeStamp: -1}, limit:40});
活动集合中的一个文档如下所示:
{
"user" : "ZJrgYm34rR92zg6z7",
"type" : "editArg",
"debId" : "wtziFDS4bB3CCkNLo",
"argId" : "YAnjh2Pu6QESzHQLH",
"timeStamp" : ISODate("2014-09-12T22:10:29.586Z"),
"_id" : "sEDDreehonp67haDg"
}
当我在 mongo shell 中运行第 41 行完成的查询时,我收到以下错误:
error: { "$err" : "Unsupported projection option: timeStamp", "code" : 13097 }
我真的不知道为什么会这样。你也可以帮我吗?谢谢。
【问题讨论】:
标签: meteor websocket openshift