簡體   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