2017-12-18 282 views
0

我有以下模式:猫鼬到期

ip: String, 
port: Number, 
msgboard: [{ 
    date: { 
     type: Date, 
     default: Date.now, 
     expires: 120 
     }, 
    msg: String 
}] 

我想从创建120秒后自动删除的消息。但上面的删除是整个文件,而不仅仅是来自msgboard的subdoc。 我一直在使用cron并运行一个函数,但代码看起来太凌乱了。有没有内在的方法?

回答

1

我认为你应该试试这个,它的工作。 我已经创建了两个模式针对此问题

msgboard架构:

var mongoose  = require('mongoose'); 
var Schema  = mongoose.Schema; 

var msgboardSchema = new Schema({ 
    date: { 
     type: Date, 
     default: Date.now, 
     expires: 120 
     }, 
    msg: String 
}); 

module.exports = mongoose.model('msgboard', msgboardSchema); 

主测试模式:在其中msgboard的引用存储

var mongoose  = require('mongoose'); 
var Schema  = mongoose.Schema; 

var TestSchema = new Schema({ 
    ip : { type : String }, 
    port : { type : String }, 
    msgboard : [{type : Schema.Types.ObjectId, ref : 'msgboard'}] 
}); 

module.exports = mongoose.model('Test', TestSchema); 

作为msgboard是从单独的测试,这只会在120s后从Test中删除msgboard subdocumet,而不是整个测试文档。

+0

感谢这工作! –