mongoose / javascript: невозможно обновить коллекцию в Mongodb - PullRequest
0 голосов
/ 03 июля 2018

Это моя схема БД

let couponId = Schema({
    RestaurantId: { type: String },
    RestaurantName: { type: String },
    RestaurantLocation: { type: String },
    AssignedTo: Schema.Types.Mixed,
    CouponValue: { type: [String] }
});

Я хочу обновить поле AssignedTo значением массива объектов с динамическим ключом и значением. Я выполняю этот запрос

CouponId.findOne({
  "RestaurantId": resId
}, (err, restaurant) => {

  value.push({
    [userNumber]: restaurant.CouponValue[0]
  });
  console.log(value);
  restaurant.update({
    "RestaurantId": resId
  }, {
    $set: {
      "AssignedTo": value
    }
  }, function(err) {
    if (err) {
      console.log(err);
    } else {
      console.log("updated");
    }
  });
});

Запрос, когда выполняется, дает результат updated в консоли, но не обновляется в БД. Если этот запрос преобразуется в запрос MongoShell и выполняется, он дает результат, и коллекция обновляется, где выполняемый мной запрос mongoShell

db.couponids.update({"RestaurantId" : "1234"},{$set:{"AssignedTo":[{"1234":"2345"}]}});

Где я иду не так?

1 Ответ

0 голосов
/ 03 июля 2018

restaurant - это выход из первой коллекции, в котором нет функции обновления ... Итак, вам нужно сохранить то же имя коллекции, из которого вы сделали findOne

CouponId.update({
    "RestaurantId": resId
  }, {
    $set: {
      "AssignedTo": value
    }
  }, function(err) {
    if (err) {
      console.log(err);
    } else {
      console.log("updated");
    }
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...