Mongoose发布更新中间件无法正常工作

时间:2016-05-11 09:39:50

标签: node.js express mongoose

我使用"mongoose": "^4.1.2"。在更新文档后,我尝试更新matchRate字段。但它并没有发挥任何错误。

这是代码:

list.model.js

'use strict';

var mongoose = require('bluebird').promisifyAll(require('mongoose'));
import { Schema } from 'mongoose';

var ListSchema = new Schema({
  name: { type: String, required: true },
  user: { type: Schema.Types.ObjectId, ref: 'User', required: true },
  emails: [],
  emailColRef: String,
  matchCount: Number,
  totalCount: Number,
  matchRate: Number,
  state: {
    type: String,
    enum: ['pending', 'complete', 'invalid']
  },
  user: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'User'
  },
  default: {
    type: Boolean,
    default: false
  }
});


ListSchema
  .virtual('count')
  .get(() => this.emails.length);

ListSchema
  .post('update', function() {

   //  this.update({},{ $set: { matchRate: this.matchCount / this.totalCount } });//Not working
      //////-------------OR---------------//////
   //  this.matchRate=this.matchCount / this.totalCount;//Not working

    console.log(this.matchCount);//undefined
    console.log(this.totalCount);//undefined
    console.log(this.matchRate);//undefined



  });

export default mongoose.model('List', ListSchema);

list.controller.js

.....
.....
.....
var newList = {};
newList.name = name;
newList.emails = emails;
newList.emailColRef = emailColRef;
newList.state = status;
newList.matchCount = matchCount;
newList.totalCount = totalCount;
var query = { name: req.body.name };
List.update(query, newList, function(err, doc) {
  // index(req, res);
  if (err) {
    console.log("Error in list update ", err)
    return;
  }

  fs.unlink(req.file.path, function(err) {
    if (err) {
      console.log("Error in removing file", err)
      return;
    }
  });

  console.log('Update list with match status');
});

0 个答案:

没有答案
相关问题