簡體   English   中英

mongodb中另一個集合的增量字段

[英]Increment field of another collection in mongodb

我創建了兩個集合,一個集合用於企業,另一個集合用於員工,其架構如下:

 var mongoose= require('mongoose'); var Enterprise= new mongoose.Schema({ name:{type:String}, email:{type:String}, sector:{type:String}, employees: {type:Number,default:0} }); module.exports={ Enterprise:Enterprise }; 

 var mongoose = require('mongoose'); var employee = new mongoose.Schema({ enterprise:{type: String}, name:{type:String}, email:{type:String}, password:{type:String}, gender:{type:String}, }); module.exports = { employee:employee }; 

我添加的員工路線

 var mongoose = require('mongoose'); var q = require('q'); var employee = mongoose.model('employee'); var enterprise = mongoose.model('enterprise'); var addEmployee = function(req, res) { newEmployee = new employee(); newEmployee.enterprise = req.params.enterprise; newEmployee.name = req.params.name; newEmployee.email = req.params.email; newEmployee.gender = req.params.gender; function detailSave() { var deferred = q.defer(); newEmployee.save(function(err, data) { if (err) { res.send(500); console.log('couldnt save employee details'); deferred.reject({errmessage: 'couldnt save employee details', err: err}); } else { res.send(200); deferred.resolve({data: data}); } }); return deferred.promise; } function incrementEmployee(doc) { var deferred = q.defer(); enterprise.findOneAndUpdate({ 'name': doc.enterprise }, { $inc: { 'employees': 1 } }, function(err, num) { if (err) { deferred.reject({errmessage: 'couldnt incrementEmployee', err: err}); res.send(500); console.log('couldnt incrementEmployee'); } else { res.send(200); deferred.resolve({num:num}); } }); return deferred.promise; } detailSave() .then(incrementEmployee) .then(function(success) { console.log('success', success); res.json(200, success); }) .fail(function(err) { res.json(500, err); }) .done(); }; module.exports = { addEmployee: addEmployee }; 

問題是當我添加員工時,企業集合中的employee字段不會增加

我認為您的查詢無法正常工作,因為doc.enterprisenull根據您的評論。

試着給你的query像這樣{'name': doc.data.enterprise}

function incrementEmployee(doc) {

  var deferred = q.defer();

  enterprise.findOneAndUpdate({
      'name': doc.data.enterprise
    }, {
      $inc: {
        'employees': 1
      }
    },

    function(err, num) {
      if (err) {
        deferred.reject({
          errmessage: 'couldnt incrementEmployee',
          err: err
        });
        res.send(500);
        console.log('couldnt incrementEmployee');
      } else {
        res.send(200);
        deferred.resolve({
          num: num
        });
      }
    });

  return deferred.promise;

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM