PostgreSQL, Sequelize возвращает ноль, если строка не существует - PullRequest
0 голосов
/ 31 марта 2020

Когда я делаю вызов в базу данных и нет нужной мне строки, запрос возвращает ноль, могу ли я сделать запрос, чтобы вернуть все существующие поля

supplierRouter.get('/:supplier_id', async (req, res) => {
  let [supplier] = await Promise.all([
    models.supplier.model.findOne({
      attributes: [
        'id',
        'name',
        'order',
        'type',
        'credit_card_id',
        'max_payment',
        'max_percentage_profit',
        'min_percentage_profit',
        'status',
        Sequelize.literal(`
              "SupplierContact"."name" AS "contact_name",
              "SupplierContact"."phone" AS "contact_phone_number",
              "SupplierColor"."logo_background" AS "logo_background_color",
              "SupplierColor"."light_logo_background_color" AS "light_logo_background",
              "Address"."street" AS "address",
              "Document"."url" AS "image", 
              "LL_Document"."url" AS "light_logo"
           `),
      ],
      include: [
        { model: models.supplierContact.model, as: 'SupplierContact' },
        { model: models.address.model, as: 'Address' },
        { model: models.supplierColor.model, as: 'SupplierColor' },
        {
          model: models.business.model,
          attributes: ['id'],
          through: {
            attributes: [['supplier_id', 'id']],
            where: { is_authorized: true },
          },
          as: 'Business',
          require: true,
        },
        {
          model: models.document.model,
          as: 'Document',
          where: { type: getTypeNum('image', 'Document') },
          through: {
            attributes: [['supplier_id', 'id']],
          },
          require: false,
        },
        {
          model: models.document.model,
          require: false,
          as: 'LL_Document',
          where: { type: getTypeNum('light_logo', 'Document') },
          through: {
            attributes: [['supplier_id', 'id']],
          },
        },
      ],
      raw: true,
      where: {
        id: req.params.supplier_id,
        '$Business.id$': { [Op.ne]: null },
      },
      includeIgnoreAttributes: false,
    }),
  ]).catch((e) => console.error(e));
  console.log(supplier);
  res.send(supplier);
});

В этом случае я не поле "light_lo go" не должно быть. И мне нужно получить объект из БД без этого поля, если его не существует. Как я могу это сделать?

...