首页 > 解决方案 > 如何在不丢失其方法的情况下将 javascript 对象保存到 mongodb?

问题描述

我有一个从特定类派生的 JS 对象,其中包含方法。我想将它保存到猫鼬模式中的对象数组中。为此,我使用 Socket.io 发送它。当我将对象保存在服务器上然后检索它时,所有方法都消失了。这是正常行为吗?

我的对象是这样的:

class MyObject {}

MyObject.prototype.myMethod = function(){
     //Do something
}

我的架构如下所示:

const ProjectSchema = new mongoose.Schema({
    arrayData: {
        type: Array,
        of: Object,
        default: []
    }
})

我的客户端代码如下所示:

var object1 = new MyObject();

socket.emit('updateSend',{object1, projectId}, (error) => {
            if(error) {
                alert(error);
            } else {
                console.log('changes successfully updated');
            }
});

还有我的服务器:

socket.on('updateSend',async ({object1,projectId}, callback) => {
    try {
        const project = await ProjectSchema.findById(projectId)
        project.arrayData.push(object1)
        await project.save()

    } catch(e) {
        return callback(e)
    }
})

标签: javascriptmongodbsocket.io

解决方案


推荐阅读