#node.js #url
#node.js #url
Вопрос:
Я пытаюсь создать эту базовую CRM, и здесь мне нужно посмотреть, сколько раз клиент посещал ссылку! есть ли какой-либо способ, которым я могу это сделать и сохранить?
Комментарии:
1. для каждого запроса маршрута вы можете сохранить в базе данных
2. не могли бы вы уточнить, пожалуйста?
Ответ №1:
На самом деле я сделал это, как сказал Рави Теджа в комментарии.
Добавлено userClicks
в модель базы данных в случае mongoose.
(Это вложено в другой объект)
analytics: {
userClicks: {
type: Number,
default : 0
}
}
Когда какой-либо запрос попадает на этот URL, я просто обновляю это количество на единицу.
app.get('URL', (req, res) => {
//First find document in database
Url.findOne({
$text: {
$search: request.params.shortUrl
}
}).then(url => {
if (url === null) {
return response.status(404).json({
message: "Link in not valid"
});
} else {
//If successfully found, get already stored value and updated with 1, and then update that document.
const _id = url._id
let counterClicks = url.analytics.userClicks;
//Update existing values
counterClicks ;
Url.findByIdAndUpdate({
_id
}, {
$set: {
'analytics.userClicks': counterClicks
}
}).exec().then(url => {
console.log(url);
return response.redirect(302, url.originalUrl);
}).catch(error => {
console.log(error);
});
}
}).catch(error => {
console.log(error);
});
});
Вы можете сделать это с помощью более нового async-await
синтаксиса.
Из приведенного выше фрагмента кода мы получим представление о том, как это реализовать.
Комментарии:
1. Спасибо! у меня есть хорошая идея о том, как я могу это сделать! действительно ценю вашу помощь, мистер Пратамеш Г. Я застрял здесь надолго!
2. Не могли бы вы проголосовать и принять решение, чтобы другие люди сочли полезным too.@xetryDcoder
3. конечно! я сделал это!