После перебирания Гоголевских ответов и Ютубовских видео, так и не нашел решения моего вопроса....
Нужно реализовать следующую функцию, используя node.js mongodb native driver:
var users =[{name:"one",warns:1}]; //Можно сказать, что это db.collection("users").find().toArray(callback);
function plus(name){ //Та самая функция
for(i in users){ //Перебираем йузеров, да бы найти нужного (Вроде, можно использовать db.collection("users").findOne({name:name},callback)")
if(users[i].name === name) { //Если находим
users[i].warns++; //Прибавляем 1 к параметру warns
return; //И сваливаем
}
}//Иначе, если таковой не нашелся - создаём его
users.push({name:name, warns:1});
}
Можно с нативным драйвером использовать промисы, а следовательно и async/await. Если я правильно понял то можно написать так
function add(name){
(async () => {
try {
let collection = db.collection('users');
let user = await collection.findOne({ name: name });
if (user) {
user.warns++;
await collection.updateOne({ name: name }, user);
} else {
await collection.insertOne({name: name, warns:1});
}
} catch (error) {
console.error(error)
}
});
}
Через колбеки
function add(name){
db.collection('users').findOne({ name: name }, (err, user) => {
if (err) throw err;
if (user) {
user.warns++;
db.collection('users').updateOne({ name: name }, user, (err, result) => {
if (err) throw err;
console.log(result);
});
} else {
db.collection('users').insertOne({ name: name, warns: 1 }, (err, result) => {
if (err) throw err;
console.log(result);
});
}
});
}
Продвижение своими сайтами как стратегия роста и независимости