Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用ES6类的猫鼬模型_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript 使用ES6类的猫鼬模型

Javascript 使用ES6类的猫鼬模型,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,这是我见过的猫鼬模型的一个例子。this.model在将模型导出为单例时(如export default new Messages())似乎会导致大量内存泄漏 我进一步优化,只导出上面主代码中的类,并在需要时实例化。看起来还是导致了大量内存泄漏 关于我在这里所做的事情以及我应该如何改进这一点的任何输入?您如何确定内存泄漏?我可以查看内存不足的错误日志,并使用memwatch next,在每次创建messages实例时生成堆转储,将messages方案注册为模型。在类var Message=mon

这是我见过的猫鼬模型的一个例子。
this.model
在将模型导出为单例时(如
export default new Messages())似乎会导致大量内存泄漏

我进一步优化,只导出上面主代码中的类,并在需要时实例化。看起来还是导致了大量内存泄漏


关于我在这里所做的事情以及我应该如何改进这一点的任何输入?

您如何确定内存泄漏?我可以查看内存不足的错误日志,并使用
memwatch next
,在每次创建messages实例时生成堆转储,将messages方案注册为模型。在类var Message=mongoose.model('messages',modelSchema)之外尝试;然后,构造函数写入此值。模型=Message@vijay我之所以在构造函数中这样做,是因为我希望在实例化类并使用它之后,GC能够清理模型引用。
var mongoose = require('mongoose');
var Schema = mongoose.Schema;

let modelSchema = new Schema({createdAt: {type: Number}}, { strict: false});

modelSchema.pre('save', function(next) {
  this.createdAt = new Date().getTime() - 30000;
  next();
});

class Messages {

  constructor() {

    this.model = mongoose.model('messages', modelSchema, 'messages');
  }

  getAllMessages(params, cb) {
    // .... some code
    // .... uses this.model.find()
  };

  insertMessage(params, cb) {
    // .... some code
    let newMessage = new this.model(newObj);
    // uses newMessage.save()
  }
}

export default Messages;