给出的是:
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不是对象数组...->因此,在此解决方案不起作用的情况下。
如果已经存在一个电子邮件地址,如何检查“字段”电子邮件?
答案 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) {}