繁体   English   中英

Mongodb不会将项目插入集合

[英]Mongodb doesn't insert item into collection

我有一个名为MongoDB数据库interview_prac interview_prac有一个名为Users的集合。 用户注册时,用户名和密码将存储在此集合中,例如{name:_username,password:_password} 我已经将一个项目插入到Users 当我键入db.Users.find()我得到以下信息: { "_id" : ObjectId("58a22abd0321b10be42f82ac"), "name" : "reddit", "password" : "1234" }

现在,当用户注册时,应将新用户名插入此集合中,但是不会发生。

这是我的代码:

router.post('/adduser', function (req, res, next) {
    var _username = req.body.username;
    var _password = req.body.password;
    var url = 'mongodb://localhost:27017/interview_prac';

    MongoClient.connect(url, function (err, db) {
        //if we didn't connect, throw error
        if (err)
            throw err;
        console.log("connected")

        var users = db.collection('Users')
            users.findOne({
                name: _username
            }, function (err, user) {
                if (user) {
                    err = 'The username already exists'
                        res.render('about', {
                            msg: err
                        })
                } else {
                    users.insert({
                        name: _username,
                        password: _password
                    }, function (err, result) {
                        console.log("entry saved")
                        var new_msg = "Welcome " + _username
                            res.render('about', {
                                msg: new_msg
                            })
                    })
                }
            })

            db.close()
    })
    console.log("Database closed")
})

每次注册新用户时,shows entry saved并关闭数据库,这意味着新用户应该在我的收藏夹中。 但是当我做db.Users.find() 我只有一个用户,应该有两个。 我似乎无法弄清楚为什么会发生此错误。

Mongo的功能是异步的。 您需要先关闭db连接,然后再执行connect回调中的任何代码。

insert的回调中更改db.close()调用。

router.post('/adduser', function (req, res, next) {
    var _username = req.body.username;
    var _password = req.body.password;
    var url = 'mongodb://localhost:27017/interview_prac';

    MongoClient.connect(url, function (err, db) {
        //if we didn't connect, throw error
        if (err)
            throw err;
        console.log("connected")

        var users = db.collection('Users')
            users.findOne({
                name: _username
            }, function (err, user) {
                if (user) {
                    err = 'The username already exists'
                        res.render('about', {
                            msg: err
                        })
                } else {
                    users.insert({
                        name: _username,
                        password: _password
                    }, function (err, result) {
                        db.close()
                        console.log("Database closed")
                        console.log("entry saved")
                        var new_msg = "Welcome " + _username
                            res.render('about', {
                                msg: new_msg
                            })
                    })
                }
            })
    })
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM