我目前正在try 使用mongoDB和nodeJS制作一个注册表单——我已经创建了新的数据库和集合——我想在我的数据库中存储:用户名、密码、邮箱和插入时间.
我已经为用户名/邮箱添加了唯一的索引,并判断了它是否有效——我不能使用mongo的控制台或rockmongo(php mongodb管理器)添加重复的条目——所以它可以正常工作.
然而,当本应注册一个新帐户的代码段被执行并插入数据库中已有的数据时,它返回一个对象,该对象包含本应使用新帐户添加的所有数据,唯一id.关键是——它应该返回一个错误,表明条目不能复制,插入失败——相反,它返回数据并给它一个新id.数据库中已经存在的数据保持不变——即使id保持不变——它不会用脚本插入返回的新id重写.
所以,问题是...我做错了什么?或者可能一切正常,即使数据库插入失败,也应该返回数据?...
我甚至try 在执行索引之前定义索引.
我试图执行的代码(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);
}
});
}
对于这两种情况——插入新数据和插入不以任何方式修改数据库的重复数据——错误为空,保存的只是应该插入的数据的副本.有没有办法判断是否进行了插入?或者在插入之前/之后,我是否必须手动判断数据库中是否已经存在数据?