mongoosejs架构字段仅用于转换然后丢弃

时间:2015-03-25 20:28:38

标签: node.js mongodb mongoose

我的MEAN应用程序中使用了以下mongoose模式:

// schema
var categorySchema = new Schema ({
    sId: String,
    name: String,
    parentId: String,
    merchants: {},
    attributes: {}, /* used to generate pivots and then discarded. */
    pivots: [],
    _id: {type: String, select: false},
    /*other elements in db also not returned by using select: false*/
});

这就是问题所在。我有一个不是由我的应用程序创建的mongodb,而是其实际的架构在别处定义。我可以访问这些数据,但希望它的格式与数据库中的实际数据完全不同。通过使用:

,这很有用
categorySchema.options.toJSON = {
    transform: function(doc, ret, options) {

然而,架构并不代表完整的API合同,因为"属性"模式中的字段在转换中被删除。数据库中没有数据透视表,但是模式需要mongoose才能返回它。值得庆幸的是,我喜欢这个,我希望模式能够准确地反映出我要返回的内容,而不是数据库中的内容,因为坦率地说,这很糟糕,而且我正在大力改造它,所以我可以把它交给其他工程师并将其用于自动化测试。

如何从模式中获取属性但仍能在变换中使用?

1 个答案:

答案 0 :(得分:0)

原来mongoose有功能转换。所以我可以这样做:

merchants: { type: {}, get: objToArr},

并调用该函数。

请务必设置:

Schema.set(' toObject',{getters:true}); Schema.set(' toJSON',{getters:true});

为真。