У меня есть приложение Node.js, которое использует Mon goose. js для взаимодействия с MongoDB. Я пытаюсь сделать так, чтобы при выполнении определенного действия (обновление плана) оно обновляло всех пользователей с определенным идентификатором компании (ie всех пользователей, принадлежащих этой компании). Ниже мой код возвращает неопределенное количество найденных и обновленных.
const updated = User.updateMany({ companyID: req.body.companyID }, { 'company.stripe.plan': req.body.plan });
console.log(updated.n)
console.log(updated.nModified)
req.body
{ company:
{ stripe:
{ plan: '<>',
subscriptionId: '<>',
customerId: '<>',
last4: '<>' },
companyName: '<>'},
isVerified: true,
_id: '<>',
email: '<>',
companyID: 'fc5a653c-2f68-4925-9ff2-93fde2157453',
updatedAt: '2020-02-10T01:32:53.510Z',
createdAt: '2020-02-04T00:44:27.971Z',
__v: 0,
lastLogin: '2020-02-10T00:46:16.118Z',
plan: '<>',
subscriptionId: '<>' }
Я отредактировал некоторую информацию, которая не нужна и, вероятно, не следует делиться Первая часть req.body на самом деле представляет собой одного пользователя, отправляемого в API вместе с планом и subscriptionId, показанными внизу.
Мой console.log, увиденный в моем первом фрагменте, возвращает неопределенное значение, когда я ожидайте, что он вернет 2 найденные записи и 2 обновленные / измененные.
РЕДАКТИРОВАТЬ ** Видя, что здесь неясно, моя уменьшенная модель пользователя
var mongoose = require('mongoose');
var passportLocalMongoose = require('passport-local-mongoose');
var timestamps = require('mongoose-timestamp');
var bcrypt = require('bcrypt-nodejs');
var UserSchema = new mongoose.Schema({
email: {
type: String,
required: true,
unique: true
},
password: String,
companyID: {
type: String,
required: true
},
company: {
stripe: {
customerId: String,
subscriptionId: String,
last4: String,
plan: {
type: String,
default: 'default'
},
}
},
lastLogin: Date,
lastChangedBy: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
}
});
Функция со всеми, кроме необходимой удалено
exports.plan = function(req, res, next) {
...
console.log(req.body)
console.log(req.body.companyID)
const updated = User.updateMany({ companyID: req.body.companyID }, { 'company.stripe.plan': req.body.plan });
console.log(updated.n)
console.log(updated.nModified)
return res.json({success: true})
....
}