在Reactjs中使用火箭聊天方法(loadHistory)时,收到消息:“匹配失败[400]”,错误类型:“ Meteor.Error”

时间:2019-02-21 16:26:13

标签: reactjs meteor rocket.chat ddp

我正在尝试使用asteroid将Rocket聊天集成到我的应用程序中,但是当我使用Rocket.chat的LoadHistory method时得到{isClientSafe: true, error: 400, reason: "Match failed", message: "Match failed [400]", errorType: "Meteor.Error"}。需要明确的是,我以前从未使用过Rocket.chat或Asteroid。但是,某些方法可以正常工作。

/**
 * Calls a server-side method with the specified arguments.
 * @param method  string required: the name of the method to call
 * @param params  [param1, param2, ...] any optional: parameters passed to the 
   server method
 * @return Promise resolved, rejected
*/
let asteroidMethods = function (method, param){
  return socket.call(method, param)
};

getMessageHistory = (lastMessage) => {
  let param =[ lastMessage.rid, null, 50, lastMessage['ts']['$date']];
  asteroidMethods("loadHistory", param).then(res=>{
    console.log(res)
  }).catch(e=>{
    console.log(e)
  })
} 

1 个答案:

答案 0 :(得分:1)

由于Match failed响应是一个相当普通的响应,因此存在多个潜在问题导致您出错。例如,lastMessage.rid可以为空。

如果遇到问题,Rocket.Chat 服务器日志将为您提供有关底层问题的更多信息。为此,Rocket.Chat提供了一种通过用户界面访问服务器日志的好方法:

示例

在示例请求中,我将roomId设置为42

connection.method('loadHistory', [42, roomId, oldestMessageDate, 15])

这会触发以下具有非常详细信息的日志事件:

Exception while invoking method 'loadHistory'
{ Error: Match error: Expected string, got number }

有了这些信息,您应该能够确定请求背后的实际问题。