Как динамически установить имя поля и значение поля в mongoDB? - PullRequest
0 голосов
/ 14 сентября 2018

Я хочу иметь возможность установить имя поля и значение поля из пользовательского ввода. Я создаю сайт, где вы можете разместить объявление. Объявление может быть чем угодно, поэтому у меня не может быть заранее определенной схемы. Все объявления имеют общие свойства, такие как заголовок, цена и т. Д. Я думал о создании массива внутри каждого документа, который содержит детали этого конкретного продукта. Это моя рекламная модель:

        title: String,
        description: String,
        isActive: {
          type: Boolean,
          default: false
        },
        region: {
        type: mongoose.Schema.Types.ObjectId, ref: 'Region'
        },
        phoneNumber : String,
        dateCreated: {
          type: Date,
          default: Date.now
       },
       category: {
       type: mongoose.Schema.Types.ObjectId, ref: 'Category'
       },
       price: {
        type: Number
       },
       details:[ {
        name: String,
        value: String
  }]

В моей конечной точке создания объявления я хочу иметь возможность отправлять массив, содержащий все детали этого конкретного объявления. поэтому каждый элемент в массиве будет иметь имя поля и значение поля. e.g: fieldname: color, fieldvalue: black fieldname: year, fieldvalue: 2015 И в моей базе данных я хочу получить этот результат.

   details: [
      {color: black},
      {year: 2015}
   ]

Это вообще возможно? если так, как бы я это сделал? Я использую nodejs и мангуст. Спасибо.

1 Ответ

0 голосов
/ 14 сентября 2018

Конечно.Это возможно.Но убедитесь, что любые динамические поля, которые вы хотите сохранить, должны быть в Схеме.

Ex. f1: 'username', f1Value: 'xyz'

Так что здесь «имя пользователя» должно быть объявлено в вашей Схеме Мангуста.Если у вас нет ключа данных, который назначается как объект или массив.Затем вы можете вставить что-нибудь и в любом формате для этого ключа.Затем вы можете получить значения и создать Добавить объект для этого, и вы можете добавлять значения, как это.

dataObj = [];
dataObj[0][keyName] = keyValue;
user = new User({ 
    data: dataObj
});
user.save();

Это всего лишь демонстрационный пример.Не вставляйте такие динамические записи.Получите правильный запрос и создайте отдельный цикл для этих данных.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...