Actualmente estoy tratando de hacer un formulario de registro usando mongoDB y nodeJS - He creado una nueva base de datos y colección - Quiero almacenar: nombre de usuario, contraseña, correo electrónico e inserción_time en mi base de datosInsertar datos en MongoDB - sin errores, sin insertar
Agregué índices únicos al nombre de usuario/correo electrónico y verifiqué si funciona, y no puedo agregar una entrada duplicada usando la consola de mongo o rockmongo (php mongodb manager), así que funciona bien.
Sin embargo, cuando se ejecuta el fragmento de código que se supone que registra una nueva cuenta y realiza una inserción con los datos que ya están en la base de datos, devuelve un objeto que contiene todos los datos que se suponía que se agregarían con una identificación nueva y única El punto es que debería devolver un error que diga que las entradas no se pueden duplicar y la inserción falló, en cambio devuelve los datos y le da una nueva identificación. Los datos que ya residen en la base de datos permanecen intactos, incluso la ID permanece igual, no se reescribe con la nueva que devuelve la inserción del script.
Entonces, la pregunta es ... ¿qué estoy haciendo mal? ¿O tal vez todo está bien y la inserción de la base de datos debería devolver los datos incluso si falla? ...
Incluso intenté definir los índices antes de ejecutar los índices. Intenté insertar los datos usando las funciones por defecto de mongoDB y las funciones mongoJS - el resultado es el mismo en ambos casos.
El código que estoy tratando de ejecutar (por 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);
}
});
}
Para ambos casos - la inserción de nuevos datos y la inserción de datos duplicados que no modifica la base de datos de ninguna manera - ERROR es nulo y se guarda es solo una copia de los datos que se supone deben ser insertados. ¿Hay alguna manera de verificar si la inserción se realizó o no, o tengo que verificar si los datos ya existen en la base de datos o no manualmente antes/después de hacer una inserción?
Añadiendo "seguro: verdadero" a las funciones "guardar" resolvió mi problema. Gracias. – biphobe