MongoDB和NodeJS:不支持选项[服务器] &&不支持选项[caseTranslate]

时间:2019-10-07 21:34:06

标签: node.js mongodb

在这里,我目前正在学习如何将MongoDB与NodeJS一起使用,但是这在Internet上被阻塞了1h或2h,现在正在寻找一种有2个错误的解决方案,我无法在这里找到问题是我的代码(对不起,我是法语,在console.log中,句子在fr):

var MongoClient = require('mongodb').MongoClient

const mongodbUrl = "mongodb://localhost:27017/"
let client = new MongoClient(mongodbUrl, {useNewUrlParser: true})
let essai
var randomstring = '';

test()

function test(){

    var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz-*/+.,?;:!§ù%$*£¤¨^=+})°]à@ç^_\è`-|(['{#é~&²";
    var string_length = 14;
    randomstring = '';

        for (var i=0; i<string_length; i++) {

            var rnum = Math.floor(Math.random() * chars.length);
            randomstring += chars.substring(rnum,rnum+1);

        }

    //console.log(randomstring)
    CheckBDD(randomstring)
    //setTimeout(1000)

    }



function CheckBDD(randomstring){

    client.connect((err, client) => {

        if (err) throw err

        //console.log("Connexion à la bdd avec succès")
        const dbName = "wordlist"
        let db = client.db("wordlist")
        var collection = 'wordlist';


    db.collection('wordlist').findOne({wordlist: randomstring}, (err, essai) => {
        if (err) throw err
        //console.log(essai)

        if (essai == null)
        {

            db.collection('wordlist').insertOne( { wordlist: randomstring} );
            console.log("Valeur inconnue:" + randomstring)

        } else {

            console.log("Valeur déjà connue:" + randomstring)

        }

        test()

    });

});


}

错误:

  

不支持[服务器]选项

     

不支持[caseTranslate]选项

从我发现的内容来看,它将来自连接选项,但是...到了。希望您能帮助我提前非常感谢您,

Owzlaa

1 个答案:

答案 0 :(得分:0)

我刚开始在某些数据库请求中出现完全相同的“错误”。虽然不是所有的时间。我在代码的两个不同位置进行了完全相同的调用:一个在服务器的连接回调内部,另一个在路由控制器内部使用的模块中。服务器连接回调中的一个未触发错误,而另一个则触发了错误。

在客户端对象上进行控制台日志显示的选项完全相同。那有什么区别呢?服务器连接回调只是一个“读取操作”,而另一个模块中的回调最终调用一种方法来对集合本身进行更新。

我修改了代码以在其中添加条件,因此当一种情况为true时,它将修改集合,而当另一种情况为true时,则没有。你猜怎么了?第二种情况是对集合没有修改,不会触发该错误。似乎执行某种写操作会导致该操作触发。

我不确定是否要称其为错误。这更像是警告,因为它是非阻塞的(至少在我看来)。它似乎也不会触发我的任何错误处理。

除了也许我们必须制作数据库对象的副本外,我仍然没有解决方案,但是我还没有尝试过。

// Express code : NOTE - client is the MongoClient exported from somewhere else
      let db;
      client.connect()
            .then(c => {
                if (c) {
                    db = c.db(DATABASE_NAME);

                    req.client = c;

                    return verifiers.verifyForFiles(db);
                } else {
                    req.errStatus = 500;
                    throw new Error('Database error');
                }
            })
            .then(checkResult => {
                const { hasCollection, hasSchema } = checkResult;

                if (!hasCollection) {
                    /** triggers errors */
                    return collections.createFilesCollection(db);
                } else {
                    if (hasSchema) {
                        /** does not trigger errors */
                        return;
                    } else {
                        /** triggers errors */
                        return collections.updateFilesCollection(db);
                    }
                }
            })
            .then(() => next())
            .catch(next);
// more Express stuff