Javascript 如何修复Mongoose接口中的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

我试图将String对象传递给函数,以便在MongoDB中创建一个条目。当数据来自HTTP post时,此接口工作正常,但如果数据来自Websocket,则此接口不工作

此代码无效,并引发ObjectParameterError错误

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