У меня следующая проблема:
Я использую NodeJS с Express и MongoDB для запроса моей базы данных.
У меня есть документ в коллекции «доменов», содержащий поле «домен».
Например:
{
"domain" : "mydomain.com, www.mydomain.com, beta.mydomain.com, *.beta.mydomain.com",
"APIKeys" : [ "Public" : 111111 ]
}
Или другой документ:
{
"domain" : "example.com, *.example.com",
"APIKeys" : [ "Public" : 222222 ]
}
Я хотел бы запросить базу данных и вернуть результат, если extractHostname(req.get('Referrer'))
соответствует любому из доменов в поле.
var collection = 'domains';
var query = { $and: [ { 'APIKeys.Public' : req.query.APIKey }, {'domain' : extractHostname(req.get('Referrer')) } ] };
var projection = { '_id' : 1 , 'playerPref' : 1 };
Например: extractHostname(req.get('Referrer')) = beta.mydomain.com
он должен вернуть true, поскольку он соответствует регулярному выражению beta.mydomain.com.
'test.beta.mydomain.com'
должно вернуть true
, так как оно соответствует регулярному выражению *.beta.mydomain.com
.
'test.www.mydomain.com'
должен вернуть false
.
'www.mydomain.com.maliciousdomain.com'
должен вернуть false
.
Есть идеи, как сделать такой запрос, чтобы проверить, соответствует ли Реферер условиям?
Проблема, с которой я сталкиваюсь, заключается в том, что любая из строк в поле должна соответствовать запросу, а не наоборот. Имея в виду подстановочный знак в поле, а не в строке поиска. (Это как резервное регулярное выражение?)
С уважением,
Hugo