我已经查看了这个问题(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')答案 0 :(得分:3)
我将用户(架构)对象以普通JSON格式保存到redis。
获取userData(字符串)并将其解析为JSON对象:
var user = new User(JSON.parse(userData))
...您拥有用户架构的所有方法。