将JSON转换为Mongoose Schema以调用Schema Method

时间:2015-02-11 00:14:14

标签: json node.js mongodb express

我已经查看了这个问题(Is there a native feature to convert string based JSON into Mongoose Schema object instance?)并且它与我的问题有关,但并没有完全符合我的要求。

基本上,我已经从Express响应中获取了JSON,并且我想将它转换为Mongoose对象,以便在对象上调用模式方法。

我的架构看起来像这样:

var BlahSchema = new Schema({
    folder: String,
    filename: String,
    original: String
});
...
// This is the function I wish to cal
BlahSchema.virtual('url').get(function () {
    ...
});

根据我的理解,当我有一个匹配BlahSchema的对象时,我可以通过一个简单的object.url调用该方法。

我有两个问题。首先,我检索这些对象的JSON会删除它们的架构,对吗?我是通过Blah.search(...function(err, blahs))从数据库中检索这些内容的。这一切都被编码到一个JSON对象中,我通过callback(req, res, search_result)返回,其中search_result是通过search_result.blahs = blahs等创建的对象。有没有办法在调用之间保留这个模式?这将是首选方法。

其次,如果无法实现上述目标,如何在不使用上面提出的问题的答案中提到的save()函数的情况下将JSON重新强制转换为架构?我不想将对象重新添加到数据库中;我只想使用为该模式定义的方法。

编辑:快递非常恶心。你所要做的就是blah(object).method_name,其中blah = mongoose.model(' blah')

1 个答案:

答案 0 :(得分:3)

我将用户(架构)对象以普通JSON格式保存到redis。

获取userData(字符串)并将其解析为JSON对象:

var user = new User(JSON.parse(userData))

...您拥有用户架构的所有方法。