Я создал две коллекции, один для предприятия, а другой для сотрудников, их схема следующим образом,Increment поле другой коллекции в MongoDB
var mongoose= require('mongoose');
var Enterprise= new mongoose.Schema({
\t
\t name:{type:String},
\t email:{type:String},
\t sector:{type:String},
\t employees: {type:Number,default:0}
});
module.exports={
\t Enterprise:Enterprise
};
var mongoose = require('mongoose');
var employee = new mongoose.Schema({
enterprise:{type: String},
\t name:{type:String},
\t email:{type:String},
\t password:{type:String},
\t gender:{type:String},
});
module.exports = {
\t 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
};
Проблема заключается в том, когда я добавить сотрудника, поле сотрудников в коллекции предприятия не увеличивает
Вы можете проверить значение 'data' в deferred.resolve ({ данных: данные }) ;? А также проверить 'значения doc' в' incrementEmployee'function – abdulbarik
{данные: {__v: 0, пол: 'мужской', электронная почта: '[email protected]', имя: 'ашок', предприятия: 'skydrive', _id: 57ecbf6bf0de631cf333dab5}} success {num: null} – Idlliofrio
Это ваше значение 'doc' в методе' incrementEmployee'? – abdulbarik