#codeigniter #oauth
#codeigniter #oauth
Вопрос:
Я разрабатываю API с использованием библиотек Codeigniter и Alex Bilbies OAuth2 и MongoDB. Мне нужно выполнить запрос MongoDB, в котором я выполняю запрос для документа с _id равным 1, а токен доступа равен нулю.
У меня есть это до сих пор, но это не работает:
$exists_query = $this->CI->mongo_db->select('access_token')->where(array('_id' => $session_id, 'access_token' != NULL))->get('oauth_sessions');
Я тоже пробовал это:
$exists_query = $this->CI->mongo_db->select('access_token')->where(array('_id' => $session_id))->where_not_equal('access_token', NULL)->get('oauth_sessions');
Как я могу изменить этот запрос, чтобы он работал?
Ответ №1:
Это кажется странным.. Вы не используете идентификаторы, которые предоставляет mongo??
Если это так, вам придется использовать специальную функцию mongoid, которая преобразует необработанную строку в идентификатор mongo. Если вы не используете mongoid по умолчанию … чем вы действительно должны!
Также почему вам нужно устанавливать нули?? Mongo очень не зависит от структуры, если поле не используется, вам не нужно устанавливать для него нулевое значение .. просто не включайте это поле.. это не mysql, где вам нужно хранить нулевые значения.. каждая строка в базе данных mongo может иметь разные столбцы.. таким образом, когда вы запрашиваете базу данных, вы можете использовать собственный метод в mongo, чтобы проверить, существует ли поле..
Используйте mongo так, как его следует использовать .. и у вас не возникнет этих проблем, с которыми вы сталкиваетесь
Ваш запрос должен выглядеть примерно так, как
$this->CI->mongo_db->select('access_token')->where(array( '_id' => MongoId($session_id), exists => array('access_token' => -1)))->get('oauth_sessions');