为了减轻MongoDB服务器的负载,我想从Redis中的Waterline缓存一些对象。为此,我必须将对象序列化为JSON。
我的问题是,如何将我的JSON构建回Waterline模型的实例,使用数据类型处理,成员函数等,使这对消费代码透明?
每当我运行本机MongoDB查询时,我也想要这个,给我带有本地ObjectID的对象,不匹配的日期类型等。
User.findOne(id, function (err, user) {
// to string and back again, could be stored in cache in the meantime
var object = JSON.parse(JSON.stringify(user));
var user = new User(object); //doesn't work
var user = User.toObject(object); // doesn't work
}
答案 0 :(得分:5)
答案 1 :(得分:1)
您想要接近什么样的cache
?
var object = JSON.parse(JSON.stringify(user));
不会存储所有信息。 JSON与JavaScript对象不同。其中user
是JavaScript对象,由Sails的Waterline引擎创建。它有像save
这样的方法,但当你把它变成JSON时,方法就会消失。
var user = new User(object);
或var user = User.toObject(object);
无法正常工作,因为User
不是构造函数,只是sails.models.user
的简写,代表User
/api/models/User.js
处的模型。
如果您想快速查询,则必须将data
存储在Redis中,然后再从中检索。
通过这种方式,您应该将user
从主数据库保存到redis,方法是将其手动插入redis,然后再检索。但是,除了将主数据库模型(在本例中为User
)复制到redis User
模型(或任何您命名的模型)之外,您的所有主数据库模型特征都将消失。