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

#node.js #mongodb #mongoose

Вопрос:

Я хочу публиковать данные в компании с именем mongodb, всякий раз, когда я публикую какие-либо данные с помощью почтальона, я хочу, чтобы кассовый аппарат с именем другой коллекции также хранил идентификатор компании(это похоже на хранение данных в одной коллекции, а также на хранение ее идентификатора в другой коллекции).

Ответ №1:

прежде всего, вы должны использовать промежуточные программы мангуста, в частности, предварительно сохранить, как это:

 companySchema.pre('save', function (next) {  CASH_REGISTER_MODEL.create({your object here})  });  

это работает, потому что перед сохранением создайте нужные данные во второй сущности. если вы хотите, вы также можете использовать сохранение после сохранения для создания второго объекта ПОСЛЕ сохранения первого объекта.

Комментарии:

1. Я сохранил свои данные в коллекции компании. как я могу использовать идентификатор объекта коллекции моей компании в коллекции кассовых аппаратов

2. companySchema.pre(«сохранить», функция (следующая) { CASH_REGISTER_MODEL.create({Идентификатор компании: this._id}) });

3. вы должны зарегистрировать идентификатор компании в схеме регистрации 🙂

4. данные const = ждут компанию.создайте({…req.тело}) верните статус(200).json({сообщение:»компания добавлена успешно»,компания})

5. это то, что я сделал, чтобы разместить данные в коллекции компании. теперь я хочу, чтобы, когда я размещаю данные в коллекции компании, идентификатор компании должен храниться в cashregister, так как я уже создал схему для регистрации

Ответ №2:

Вы могли бы попробовать сделать это таким образом:

 const newCompany = new Company({...req.body});  await newCompany.save();  const existingCompanyId = await Register.findOne({ companyId: newCompany._id });  if (existingCompanyId) {  return res.status(400).json({  success: false,  errorMessage: 'Company id already exists',  }); }  const newRegister = new Register({ companyId: newCompany._id }); // Assuming your Register schema contains companyId property field  await newRegister.save();  return res.status(200).json({  success: true,  successMessage: 'Company has been created successfully',  company: newCompany, });  

Комментарии:

1. (узел:22248) Необработанное предупреждение об ошибке: Ошибка MongoServer: E11000 коллекция ошибок с дубликатом ключа: база данных myFirstDatabase.agencies индекс: код_1 ключ dup: { код: «006» }

2. Это ошибка, которую я получаю, когда использую этот код

3. router.post(‘/панель администратора’, асинхронно(req,res, далее)=gt;{ попробуйте{ const newcompany = новая компания({…req.body}); ожидайте новой компании.сохраните(); const newcompany = новая компания({ наличные: идентификатор компании}); // Предполагая, что ваша схема регистрации содержит поле свойства идентификатора компании.ждите новых денег.сохраните(); верните статус(200).json({ успех: верно, сообщение об успехе:»Компания успешно создана», компания: новая компания,});} catch(ошибка){ res.json({сообщение: «не установлено»})}})

4. В соответствии с этой ошибкой, которую вы упомянули «Ошибка MongoServer: E11000 коллекция дубликатов ключей: myFirstDatabase.индекс агентства: код_1 ключ dup: { код: «006» }»: Монго говорит вам, что у вас уже есть идентификатор компании, существующий в коллекции регистров, я думаю, что вы сделали его уникальным, поэтому вы можете сначала проверить, существует ли идентификатор компании в коллекции регистров, если не добавить его в нее.

5. Если у вас все еще есть эта предыдущая ошибка, попробуйте удалить свою коллекцию, это может быть проблема с индексом.