如何检查对象是否存在?

时间:2018-09-24 12:07:28

标签: node.js mongodb

给出的是:

var item = {
    email: req.body.email,
    //pw: req.body.pw,
    pw: encpassword,
    timestamp: Date.now()
};
var mailAddress = item.email;
var resultArrayEmail = [];

MongoClient.connect(url, { useNewUrlParser: true }, function(err, client) {
    // assert.equal(null, err);


    const db = client.db(dbName);

    //####### Proof of exist

    var cursor = db.collection('userdata').find();
    var cursorCheck = db.collection('userdata').findOne({"email": mailAddress});

    if (cursorCheck.length > 0){
        console.log('Item exists');
    }else{
        db.collection('userdata').insertOne(item, function(err, result) {
            assert.equal(null, err);
            client.close();
        }); 
        // cursor.forEach(el => console.log(el.email)); => Returns all emailadresses within a collection
        console.log(item);
        console.log('inserted!');           
    }   
    res.redirect('/register');
});

Using indexOf to filter an array 我已经这样尝试过了,并且工作正常,但似乎mongoDB-collection不是对象数组...->因此,在此解决方案不起作用的情况下。

如果已经存在一个电子邮件地址,如何检查“字段”电子邮件?

2 个答案:

答案 0 :(得分:2)

findOne有回调函数,您需要检查回调函数Like

中的条件
    db.collection("userdata").findOne({ email: mailAddress }, function(error, result) {
    if (!error) {
      if (result) {
        console.log("Item exists");
      } else {
        console.log("Item not exists");
      }
    } else {
      console.log("MongoDB error");
    }
  });

答案 1 :(得分:0)

使用以下检查

if (result !== null) {}

if (result === null) {}