#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
})
Предложение: Может быть более чистым, если вы используете асинхронное/ожидание вместо обратного вызова.