我可以在MongoDB中保存JS对象(带有方法)吗?

时间:2018-10-11 18:40:04

标签: javascript mongodb object mongoose

我有一些对象可以对文本格式设置方法和CSS样式进行编码,我想将它们保存在MongoDB集合中(使用Mongoose)。对象是一个更复杂的版本:

const myStyle = {
    book: {
        templates: ["/authors/. ", "/title/. ", "/date/. "],
        authors: {
            format: formatAuthors
        },
        title: {
            format: formatTitle,
            style: {fontStyle: "italic"}
        }
    }
}

有人知道如何将这种东西发送到服务器并将其保存在MongoDB集合中吗?根据Mongoose文档,Object不是有效的schemaType,因此我不能直接将其保存为JS对象。

3 个答案:

答案 0 :(得分:0)

您可以通过Schema.methods字段添加方法。

SchemaName.methods.methodName = function(){...}

也请看一下示例here中的基本猫鼬用法。

答案 1 :(得分:0)

Object不是有效的猫鼬模式类型,但Mixed是有效的猫。

  

一个“万事俱备”的SchemaType,它的灵活性来自于   它很难维护。混合可以通过   Schema.Types.Mixed或通过传递空对象文字来实现。

您可以使用上面的链接阅读有关它的更多信息。

在这种情况下,只要您要保存的数据是有效的JS对象,就可以将其插入。

但是请注意,由于它是schema-less type,因此在使用“混合”时存在一些性能限制,并且如文档中再次所述,需要在更改后调用.markModified(path)

答案 2 :(得分:-1)

不,您不能将方法保存到mongodb