Я пытаюсь заставить node.js возвращать информацию из базы данных mongoDB при вызове.В моей базе данных у меня есть
_id: ObjectID("5cc0fe18f7875c00bc88de4c")
url:"google.com?ref_source=test"
count:0
Обычно, когда я делаю http://localhost:8080/count/google.com+test
, я хочу, чтобы мой код вошел в MongoDB и получил значение перед count
.Когда я запускаю этот код, результат 1
регистрируется, но не возвращается.Вместо этого {}
возвращается.
const express = require('express')
const bodyParser = require('body-parser')
const app = express()
app.use(bodyParser.text())
var MongoClient = require('mongodb').MongoClient;
var mongourl = "mongodb://localhost:27017/";
async function getcount(fullurl) {
try{
var db = await MongoClient.connect(mongourl) //Connect to mongoDB
var dbo = db.db("analytics") //Connect to analytics DB
var query = {url: fullurl} //Find results with the input under URL
var result = await dbo.collection("main").find(query).toArray() //Connect to main collection
let res = JSON.stringify(result)
res = res.substring(res.indexOf(":") + 1)
res = res.substring(res.indexOf(":") + 1)
res = res.substring(res.indexOf(",") + 1)
res = res.substring(res.indexOf('":') + 2)
res = res.substring(0, res.indexOf('}]'))
// Get result
db.close()
return await res //Return it
}
catch(error)
{
return error
}
}
function isURL(str){
var pattern = new RegExp('^((ft|htt)ps?:\\/\\/)?'+ // protocol
'((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|'+ // domain name and extension
'((\\d{1,3}\\.){3}\\d{1,3}))'+ // OR ip (v4) address
'(\\:\\d+)?'+ // port
'(\\/[-a-z\\d%@_.~+&:]*)*'+ // path
'(\\?[;&a-z\\d%@_.,~+&:=-]*)?'+ // query string
'(\\#[-a-z\\d_]*)?$','i'); // fragment locator
return pattern.test(str);
}
async function count(string){
try {
//console.log(string)
string = string.split("(!").join("/");
//console.log(string)
string = string.split("/?ref_source=").join("+");
//console.log(string)
string = string.split("https://").join("");
//console.log(string)
lengths = string.split("+")
toReturn = ("Not a Valid Url Input: " + lengths[0])
if (isURL(lengths[0])) {
if ((lengths[1] == "") || (lengths[1] == "undefined")) {
return "Not A Valid Identifier Input"
}
fullurl = (lengths[0] + "?ref_source=" + lengths[1])
console.log(fullurl)
let response = await(getcount(fullurl))
console.log(response) //Log the info
return await (response) //Return it. THIS is THE PART THAT FAILS
}
}
catch(error)
{
return error
}
}
app.get('/count/:string', (req, res) => {
res.send((count(req.params.string)))
})
app.listen(8080, () => console.log('> Listening!'))