完全虚拟的Mongoose模式,保存在内存中而不是持久化

时间:2014-04-29 15:47:32

标签: javascript node.js mongoose

无法找到任何文档或帖子,这可能表明我试图做错了。

是否可以使用完全虚拟的Mongoose模式,即不会持久保存到db?

我有很多模型,其中大多数是持久化到db,但是我们希望一直包含仅保留在内存中的模型,而不是持久存在?

我能提出的最接近的是这些行,但它仍将保留数据库中只有id属性的对象。简化到这里:

// access_token.js
var schema = mongoose.Schema({});
schema.virtual('token').get(function() {
    return 'abcde12345';
});
module.exports = mongoose.model('AccessToken', schema);

这样做的想法是抽象模型,以便应用程序的消费部分不需要知道模型是持久存储到数据库还是只保存在内存中。当然,这可以通过创建与普通对象相同的对象和方法来实现,但这种方法很快就会变得重复。

2 个答案:

答案 0 :(得分:2)

您可以覆盖(猴子补丁)保存数据的Mongoose方法(例如.save),但我怀疑您尝试做的事情很难/不可能。

你可以看看sift.js,它是一个查询库来进行内存中查询。

https://github.com/crcn/sift.js

答案 1 :(得分:1)

您可以为此模型设置pre middleware,但始终失败。

schema.pre('save', function (next) {
    next(new Error('This can't be saved!');
});

所以你会知道你什么时候做错了。