В настоящее время я пытаюсь создать форму регистрации, используя mongoDB и nodeJS - я создал новую базу данных и коллекцию - я хочу сохранить: имя пользователя, пароль, адрес электронной почты и insert_time в моей базе данных.
IЯ добавил уникальные индексы к имени пользователя / электронной почте и проверил, работает ли он - и я не могу добавить дублированную запись, используя консоль mongo или rockmongo (менеджер php mongodb) - так что все работает нормально.
Однако - когда кусоккода, который должен зарегистрировать новую учетную запись, выполняется и выполняет вставку с данными, которые уже находятся в базе данных - он возвращает объект, который содержит все данные, которые должны были быть добавлены с новым уникальным идентификатором.Суть в том, что он должен возвращать ошибку, которая говорит о том, что записи не могут быть продублированы и вставка не удалась - вместо этого он возвращает данные обратно и присваивает ему новый идентификатор.Данные, которые уже находятся в базе данных, остаются нетронутыми - даже идентификатор остается прежним - он не перезаписывается новым, возвращаемым вставкой скрипта.
Итак, вопрос в том ... что я делаю неправильно?Или, может быть, все в порядке, и вставка базы данных должна возвращать данные, даже если она не удалась? ...
Я даже пытался определить индексы перед выполнением индексов.Я попытался вставить данные, используя стандартные функции mongoDB и функции mongoJS - результат одинаков в обоих случаях.
Код, который я пытаюсь выполнить (для mongoJS ):
var dbconn = require("mongojs").connect('127.0.0.1:27017/db', ['users']);
var register = function(everyone, params, callback)
{
// TODO: validation
dbconn.users.ensureIndex({username:1},{unique:true});
dbconn.users.ensureIndex({email:1},{unique:true});
dbconn.users.save(
{
username: params.username,
password: params.password,
email: params.email,
insert_time: Date.now()
},
function(error, saved)
{
if(error || !saved)
{
callback(false);
}
else
{
console.log(error);
console.log(saved);
callback(true);
}
});
}
В обоих случаях - вставка новых данных и вставка дублированных данных, которые никак не изменяют базу данных - ОШИБКА равна нулю, а SAVED - это просто копия данных, которая должна быть вставлена,Есть ли способ проверить, была ли выполнена вставка или нет - или мне нужно проверить, существуют ли данные в базе данных или нет вручную до / после выполнения вставки?