在这里,我目前正在学习如何将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
答案 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