我正在尝试使用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)
})
}
答案 0 :(得分:1)
由于Match failed
响应是一个相当普通的响应,因此存在多个潜在问题导致您出错。例如,lastMessage.rid
可以为空。
如果遇到问题,Rocket.Chat 服务器日志将为您提供有关底层问题的更多信息。为此,Rocket.Chat提供了一种通过用户界面访问服务器日志的好方法:
Log Level
非常冗长->级别2
(https://example.com/admin/Logs)示例
在示例请求中,我将roomId
设置为42
:
connection.method('loadHistory', [42, roomId, oldestMessageDate, 15])
这会触发以下具有非常详细信息的日志事件:
Exception while invoking method 'loadHistory'
{ Error: Match error: Expected string, got number }
有了这些信息,您应该能够确定请求背后的实际问题。