используйте метод мангуста для вставки данных в схему

#javascript #node.js #mongodb #mongoose

Вопрос:

У меня есть схема заказа, в которой есть два поля: одно-идентификатор пользователя, а другое-имя пользователя. Я получаю идентификатор пользователя из API, что я хочу, основано на идентификаторе пользователя, я извлекаю имя пользователя из схемы пользователя и обновляю его в схеме заказа. Для этой цели я добавил метод в схему заказа.

 
OrderSchema.methods.setCustomerName=function()
{
    let _id=this.userID;
    User.findOne({_id},(err,item) =>
    {
        if(item)
        {
            this.customer=item.firstName " " item.lastName;
        }
    })
}

 

Я вызвал этот метод при создании заказа.

 
  const newOrder = Order({
                    products: products,
                    price: totalAmount,
                    totalAmount: totalAmount,
                    userID: userID
                })

                newOrder.setCustomerName();

 

и, наконец, сохраните новый заказ

  newOrder.save((err, order) => {
                    if (order) {

                        return res.json({
                            status: true,
                            message: "Payment received"
                        })
                    } 
})

 

Однако это не работает. Я даже не получил пустое значение в поле имя пользователя. Пожалуйста, подскажите, что я делаю не так.

Ответ №1:

Попробуй:

 const newOrder = new Order({
                    products: products,
                    price: totalAmount,
                    totalAmount: totalAmount,
                    userID: userID
                })
 

Предложение: Может быть более чистым, если вы используете асинхронное/ожидание вместо обратного вызова.