Javascript 如何修复Mongoose接口中的ObjectParameterError错误
我试图将String对象传递给函数,以便在MongoDB中创建一个条目。当数据来自HTTP post时,此接口工作正常,但如果数据来自Websocket,则此接口不工作 此代码无效,并引发ObjectParameterError错误Javascript 如何修复Mongoose接口中的ObjectParameterError错误,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我试图将String对象传递给函数,以便在MongoDB中创建一个条目。当数据来自HTTP post时,此接口工作正常,但如果数据来自Websocket,则此接口不工作 此代码无效,并引发ObjectParameterError错误 wss.on('connection', ws => { ws.on('message', message => { console.log(`Received message => ${message}`); console.l
wss.on('connection', ws => {
ws.on('message', message => {
console.log(`Received message => ${message}`);
console.log(typeof(message));
console.log(message.constructor.name); ==> prints String class
Fnode.create(message, function (err, post) {
if (err) console.log(`Received error => ${err}`);
console.log(`Received post => ${post}`);
});
});
});
错误是:
Received message =>
{"ptName":"java","agentId":"localhost.localdomain","tId":4442,"evType":"thread start","desc":"tomcat process","ptId":1,"evId":"clone","tStamp":"2019-01-13T05:47:48.253639314Z","tName":"java"}
string
String
Received error => ObjectParameterError: Parameter "obj" to Document() must be an object, got
{"ptName":"java","agentId":"localhost.localdomain","tId":4442,"evType":"thread start","desc":"tomcat process","ptId":1,"evId":"clone","tStamp":"2019-01-13T05:47:48.253639314Z","tName":"java"}
此代码运行良好
router.post('/', function(req, res, next) {
console.log(`Received message => ${req.body}`);
console.log(typeof(req.body));
console.log(req.body.constructor.name); ==> prints Object class
Fnode.create(req.body, function (err, post) {
if (err) return next(err);
res.json(post);
});
});
WebSocket支持发送和接收:字符串、类型化数组(ArrayBuffer)和Blob。在发送之前,必须将Javascript对象序列化为上述类型之一。 要发送对象,请使用以下命令:
ws.send(JSON.stringify(object));
或
当您收到Web套接字消息时,需要对其进行反序列化。并将其转换为JSON
wss.on('connection', ws => {
ws.on('message', message => {
message = JSON.parse(message);
console.log(`Received message => ${message}`);
console.log(typeof(message));
console.log(message.constructor.name); ==> prints String class
Fnode.create(message, function (err, post) {
if (err) console.log(`Received error => ${err}`);
console.log(`Received post => ${post}`);
});
});
});
WebSocket支持发送和接收:字符串、类型化数组(ArrayBuffer)和Blob。在发送之前,必须将Javascript对象序列化为上述类型之一。 要发送对象,请使用以下命令:
ws.send(JSON.stringify(object));
或
当您收到Web套接字消息时,需要对其进行反序列化。并将其转换为JSON
wss.on('connection', ws => {
ws.on('message', message => {
message = JSON.parse(message);
console.log(`Received message => ${message}`);
console.log(typeof(message));
console.log(message.constructor.name); ==> prints String class
Fnode.create(message, function (err, post) {
if (err) console.log(`Received error => ${err}`);
console.log(`Received post => ${post}`);
});
});
});
web套接字代码中的(消息)类型是什么?web套接字代码中的(消息)类型是什么?我很高兴您的问题得到解决。如果你同意我的回答,以便其他人可以使用它@用户10948445我很高兴您的问题得到解决。如果你同意我的回答,以便其他人可以使用它@用户10948445