我正在创建一个基本网站,用于提取用户信息并将其发布到数据库。我遇到问题的原因是,如果用户之前已注册,则会阻止用户注册。
我已尝试过createIndex(unique:true)
find
ensureIndex(unique:true)
种方法,但没有成功。也许我搞砸了语法?我要么将Promise { <pending> }
作为返回值,要么将整个文档本身与许多不相关的信息联系起来。
MY .JS FILE
var express = require('express');
var router = express.Router();
var mongo = require('mongodb').MongoClient;
var request = require('request');
var bodyParser = require('body-parser');
var url = 'mongodb://localhost/ibs';
var async = require('async');
var session = require('express-session');
var code = require('./verificationCode');
router.get('/', function (req, res, next) {
router.post('/form', function (req, res) {
var name = req.body.name;
var surname = req.body.surname;
var phone = req.body.phone;
var email = req.body.email;
// var address = req.body.adress;
var verCode = code.code();
mongo.connect(url, function (err, db) {
person = {
Name: req.body.name,
Surname: surname,
Phone: phone,
Email: email,
// Adress: address,
verCode: verCode
}
db.collection('user').insert(person);
res.redirect('/congratulations');
});
});
res.render('information');
});
module.exports = router;
答案 0 :(得分:0)
我使用的方法是一个简单的if()语句来检查是否已插入具有该名称/用户名的人
(async function addUser() {
let client;
try {
client = await MongoClient.connect(url);
const db = client.db(dbName);
const col = db.collection('users');
const userFromDB = await col.findOne({ //the user you will be inserting});
if (userFromDB) {
// dont insert user
} else {
// insert user
}
} catch (err) {
console.log(err)
}
}());
如果userFromDB为true,那么如果找到了一个并且您不想插入。如果它是假的,那么你确实要插入。