Node.js 如何插入唯一的emailid并显示已存在的邮件
下面是代码 User.js:Node.js 如何插入唯一的emailid并显示已存在的邮件,node.js,mongodb,rest,cloud,ibm-cloud,Node.js,Mongodb,Rest,Cloud,Ibm Cloud,下面是代码 User.js: /* * POST to adduser. */ router.post('/adduser', function(req, res) { var db = req.db; db.users.findOne({ inputUserEmail: inputUserEmail }, function(err, user) { if (user) { console.log("user exists") } else { console.l
/*
* POST to adduser.
*/
router.post('/adduser', function(req, res) {
var db = req.db;
db.users.findOne({ inputUserEmail: inputUserEmail }, function(err, user) { if (user) {
console.log("user exists") } else { console.log("user doesn't exist") };
db.collection('userlist').insert(req.body, function(err, result){
res.send(
(err === null) ? { msg: '' } : { msg: err }
);
});
});
以下是插入代码:
global.js:
// Add User
function addUser(event) {
event.preventDefault();
// Super basic validation - increase errorCount variable if any fields are blank
var errorCount = 0;
$('#addUser input').each(function(index, val) {
if($(this).val() === '') { errorCount++; }
});
// Check and make sure errorCount's still at zero
if(errorCount === 0) {
// If it is, compile all user info into one object
var newUser = {
'username': $('#addUser fieldset input#inputUserName').val(),
'email': $('#addUser fieldset input#inputUserEmail').val(),
'fullname': $('#addUser fieldset input#inputUserFullname').val(),
'age': $('#addUser fieldset input#inputUserAge').val(),
'location': $('#addUser fieldset input#inputUserLocation').val(),
'gender': $('#addUser fieldset input#inputUserGender').val()
}
我是这项技术的新手,这是一个非常基本的问题。但我无法编写代码
请告诉我我在user.js中做错了什么或如何做。免责声明:从未使用过node.js,因此可能需要调整
您当前的解决方案:
您可能在“查找”字段中选择了错误。当我查看插入文档时,您可能应该查找{email:inputUserEmail}
而不是{inputUserEmail:inputUserEmail}
指数解
您可以让数据库为您完成这项工作,其想法是使mail
成为唯一的索引,以便mongodb防止在数据库级别重复插入。可以查看node.js驱动程序文档的相关部分
我从中得到的是
db.collection('userlist').createIndex("mail", true, function(err, result){}));
应该使邮件成为唯一的索引。这应该只需要执行一次
当您尝试插入数据库中已经存在的一些邮件时,insert
应返回一个err
,类似于重复索引。所以你可能看起来像
router.post('/adduser', function(req, res) {
var db = req.db;
db.collection('userlist').createIndex("mail", true, function(err, result){}));
db.collection('userlist').insert(req.body, function(err, result){
if (err) {console.log("user exists") }
res.send(
(err === null) ? { msg: '' } : { msg: err }
);
});
});
这将每次构建索引,因此它将比在某些初始化时仅创建一次索引所需的时间更长,但与其他db操作相比,您通常不会创建用户。它可能应该寻找一个特定的错误(“重复索引”)或者一些你可以通过反复试验找到的东西
无法100%确定语法,因此最好将其视为伪代码。免责声明:从未使用过node.js,因此可能需要调整
您当前的解决方案:
您可能在“查找”字段中选择了错误。当我查看插入文档时,您可能应该查找{email:inputUserEmail}
而不是{inputUserEmail:inputUserEmail}
指数解
您可以让数据库为您完成这项工作,其想法是使mail
成为唯一的索引,以便mongodb防止在数据库级别重复插入。可以查看node.js驱动程序文档的相关部分
我从中得到的是
db.collection('userlist').createIndex("mail", true, function(err, result){}));
应该使邮件成为唯一的索引。这应该只需要执行一次
当您尝试插入数据库中已经存在的一些邮件时,insert
应返回一个err
,类似于重复索引。所以你可能看起来像
router.post('/adduser', function(req, res) {
var db = req.db;
db.collection('userlist').createIndex("mail", true, function(err, result){}));
db.collection('userlist').insert(req.body, function(err, result){
if (err) {console.log("user exists") }
res.send(
(err === null) ? { msg: '' } : { msg: err }
);
});
});
这将每次构建索引,因此它将比在某些初始化时仅创建一次索引所需的时间更长,但与其他db操作相比,您通常不会创建用户。它可能应该寻找一个特定的错误(“重复索引”)或者一些你可以通过反复试验找到的东西
无法100%确定语法,因此最好将其视为伪代码。免责声明:从未使用过node.js,因此可能需要调整
您当前的解决方案:
您可能在“查找”字段中选择了错误。当我查看插入文档时,您可能应该查找{email:inputUserEmail}
而不是{inputUserEmail:inputUserEmail}
指数解
您可以让数据库为您完成这项工作,其想法是使mail
成为唯一的索引,以便mongodb防止在数据库级别重复插入。可以查看node.js驱动程序文档的相关部分
我从中得到的是
db.collection('userlist').createIndex("mail", true, function(err, result){}));
应该使邮件成为唯一的索引。这应该只需要执行一次
当您尝试插入数据库中已经存在的一些邮件时,insert
应返回一个err
,类似于重复索引。所以你可能看起来像
router.post('/adduser', function(req, res) {
var db = req.db;
db.collection('userlist').createIndex("mail", true, function(err, result){}));
db.collection('userlist').insert(req.body, function(err, result){
if (err) {console.log("user exists") }
res.send(
(err === null) ? { msg: '' } : { msg: err }
);
});
});
这将每次构建索引,因此它将比在某些初始化时仅创建一次索引所需的时间更长,但与其他db操作相比,您通常不会创建用户。它可能应该寻找一个特定的错误(“重复索引”)或者一些你可以通过反复试验找到的东西
无法100%确定语法,因此最好将其视为伪代码。免责声明:从未使用过node.js,因此可能需要调整
您当前的解决方案:
您可能在“查找”字段中选择了错误。当我查看插入文档时,您可能应该查找{email:inputUserEmail}
而不是{inputUserEmail:inputUserEmail}
指数解
您可以让数据库为您完成这项工作,其想法是使mail
成为唯一的索引,以便mongodb防止在数据库级别重复插入。可以查看node.js驱动程序文档的相关部分
我从中得到的是
db.collection('userlist').createIndex("mail", true, function(err, result){}));
应该使邮件成为唯一的索引。这应该只需要执行一次
当您尝试插入数据库中已经存在的一些邮件时,insert
应返回一个err
,类似于重复索引。所以你可能看起来像
router.post('/adduser', function(req, res) {
var db = req.db;
db.collection('userlist').createIndex("mail", true, function(err, result){}));
db.collection('userlist').insert(req.body, function(err, result){
if (err) {console.log("user exists") }
res.send(
(err === null) ? { msg: '' } : { msg: err }
);
});
});
这将每次构建索引,因此它将比在某些初始化时仅创建一次索引所需的时间更长,但与其他db操作相比,您通常不会创建用户。它可能应该寻找一个特定的错误(“重复索引”)或者一些你可以通过反复试验找到的东西
不能100%确定语法,因此最好将其视为伪代码。您也可以将用户电子邮件用作收藏中的id字段
通过使用上述解决方案,您不必担心获取额外的索引并维护该索引。您还可以使用用户电子邮件作为收藏中的id字段
通过使用上述解决方案,您不必担心获得额外的索引和维护