2017-02-24 4 views
0

を設定するために、私は私のスキーマを書いたが、私は私のNode.jsサーバーを実行すると、次のエラーが表示されている:MongoDBのスキーマ - CREATEINDEXを呼び出し、エラー()expireAt

MySchema.createIndexが機能

ではありません

私はレコードの期限を設定するためにそれを使用しています。これは私のコードです:

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 
var config = require('../../config.js'); 

var tc = new Date(); 
var te = tc.setSeconds(tc.getSeconds + config.EXPIRE_TOKEN_TIME.ROOM_TOKEN); 

var MySchema = new Schema({ 
    name: String, 
    guide: String, 
    leader: String, 
    partecipants_counter : { type: Number, default: 0}, 
    event_counter : { type: Number, default: 0}, 
    createAt: { type: Date, default: tc}, 
    expireAt: { type: Date, default: te}, 
    partecipants: [], 
    events : [ { 
      id : Number, 
      data: String, 
      user: String 
      } ] 
}); 

MySchema.createIndex({ "expireAt": 1 }, { expireAfterSeconds: 180 }); 

module.exports = mongoose.model(config.DATA_TYPE.ROOM, MySchema); 

答えて

0

構文は

MySchema.index({ "expireAt": 1 }, { expireAfterSeconds: 180 }); 

より一般的な例のようになります。 -まあ

var animalSchema = new Schema({ 
    name: String, 
    type: String, 
    tags: { type: [String], index: true } // field level 
}); 

animalSchema.index({ name: 1, type: -1 }); // schema level 
+0

、「はエラーが今存在していないように思わが、私はできます私の変数 'tc'と' te'のキャストが失敗するので、前進します... 'Date.now'を使うことによってキャストはありませんが、' .setSeconds'関数は利用できません。 – pittuzzo

+0

expireAtは、Dateをms(Date.now)またはObject(new Date())で指定しますか? – pittuzzo

+0

私はちょうど(秒)を取得:)でミス。ありがとう – pittuzzo

関連する問題