#javascript #node.js #mongodb
#javascript #node.js #mongodb
Вопрос:
ОШИБКА
UnhandledPromiseRejectionWarning : MongoError: $multiply only supports numeric types, not string
проблема в том, что я взял сумму товаров в корзине. но цена указана в формате строки … синтаксический анализ Int не работает
, есть ли какой-либо способ вставить как число в базу данных
ДОБАВИТЬ КОД ПРОДУКТА
addProduct: (product, callback) => {
db.get().collection('product').insertOne(product).then((data) => {
callback(data.ops[0]._id)
})
}
** ЧТОБЫ НАЙТИ СУММУ И ВЕРНУТЬ **
getTotalAmount:(userId)=>{
return new Promise(async (resolve, reject) => {
let total = await db.get().collection(collection.CART_COLLECTION).aggregate([
{
$match: { user: objectId(userId) }
},
{
$unwind: '$products'
},
{
$project: {
item: '$products.item',
quantity: '$products.quantity'
}
},
{
$lookup: {
from: collection.PRODUCT_COLLECTION,
localField: 'item',
foreignField: '_id',
as: 'product'
}
}
,
{
$project: {
item: 1, quantity: 1, product: { $arrayElemAt: ['$product', 0] }
}
}
,
{
$group:{
_id:null,
total:{$sum:{$multiply:['$quantity','$product.price']}}
}
}
]).toArray()
console.log(total[0].total);
resolve(total)
})
Комментарии:
1. Реальная проблема, похоже, заключается в следующем — «синтаксический анализ Int не работает». Пожалуйста, приведите пример этой проблемы.
2. Я не использовал синтаксический анализ… форма содержит как строковые, так и числовые элементы… но все элементы хранятся как strings…is там требуется синтаксический анализ .. если да, то куда я должен включить … в настоящее время я отправляю все элементы продукта непосредственно в базу данных
3. Похоже, вам следует рассмотреть возможность отправки соответствующих свойств уже в виде чисел или преобразовать данные в серверной части непосредственно перед вставкой в БД. Первый вариант должен быть лучше. Если данные числовые, почему они отправляются в виде строки в первую очередь?
4. В настоящее время я использую целое как object…so пожалуйста, скажите мне, как отправить как intiger в БД
5. Тогда, пожалуйста, измените вопрос. Укажите фактическое изменение, которое вы хотите внести. Включите только соответствующую информацию — например, образец объекта product.