Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript expressJS+;MongoDB-登录/注册方法_Javascript_Node.js_Mongodb_Express - Fatal编程技术网

Javascript expressJS+;MongoDB-登录/注册方法

Javascript expressJS+;MongoDB-登录/注册方法,javascript,node.js,mongodb,express,Javascript,Node.js,Mongodb,Express,我想在ExpressJSAPI中有登录/注册功能。 所以,现在我只是插入密码和电子邮件到我的数据库,我想这个功能首先检查是否与此电子邮件的用户已经在数据库中-如果是,发送用户已登录的响应。 若并没有,就把他插入数据库。 这里有可能处理一些错误吗 我已经有了: exports.login = function(req, res){ var email = req.body.email; var pwd = req.body.pass; db.collection('users', functio

我想在ExpressJSAPI中有登录/注册功能。 所以,现在我只是插入密码和电子邮件到我的数据库,我想这个功能首先检查是否与此电子邮件的用户已经在数据库中-如果是,发送用户已登录的响应。 若并没有,就把他插入数据库。 这里有可能处理一些错误吗

我已经有了:

exports.login = function(req, res){
var email = req.body.email;
var pwd = req.body.pass;

db.collection('users', function(err, collection) {
    collection.insert({login:email, password: pwd}, {safe:true}, function(err, result) {
      res.send("OK");
        });
    });
};\

不知道下一步是什么。

您可以先尝试在数据库中查找用户。假设电子邮件是唯一的

exports.login = function(req, res){
  var email = req.body.email;
  var pwd = req.body.pass;

  db.collection('users', function(err, collection) {
    if (err) return res.send(500, err);

    collection.findOne({login:email}, function(err, user) {
        // we found a user so respond back accordingly
        if (user) return res.send('user logged in');

        collection.insert({login:email, password: pwd}, {safe:true}, function(err, result) {
          if (err) return res.send(500, err);
          res.send("OK");
        });
    });
  });
};

注意处理错误时,
res.send
调用之前的
return

即使我输入相同的电子邮件,它仍然会插入新的文档-你确定这些条件是好的吗?我的意思是
if(user)
在javascript中工作?:)应该添加@Bulkan,我想:)@pawel使用传递给
findOne
的回调调用时使用两个参数
err
和数据库中的
值。如果查询与任何内容都不匹配,则
设置为null。在JavaScript中是一个虚假的值。