Я хочу сделать вставку в моем MongoDB, но она становится довольно сложной, и это простая операция, поэтому я думаю, что я потерялся в какой-то момент.MongoDB с запросами Node.js db
У меня есть три коллекции, которые я упрощу ради этого вопроса: сайты, клиенты, черный список.
Когда новый Клиент подписывается, она мгновенно получает Сайт. Поэтому мне нужно проверить форму, если Клиент не существует, тогда, если адрес электронной почты Клиента не был внесен в черный список, тогда, если сайт не существует, и, наконец, создайте элементы Клиент & Сайт.
Я начал делать это с помощью обратных вызовов, но это, кажется, overcomplciated для меня сделать так:
var input = {...}; //assume here I have all the user input
db.collection('Clients').count({'email', input.email}, {limit: 1}, function (err, count) {
if (count > 0) {
db.collection('Blacklist').count({'email', input.email}, {limit: 1}, function (err, count) {
if (count > 0) {
db.collection('Sites').count({'domain', input.domain}, {limit: 1}, function (err, count) {
if (count > 0) {
// CREATE THE ACCOUNT
} else {
res.send("Site already exists.");
}
db.close();
});
} else {
res.send("Client is blacklisted.");
}
db.close();
});
} else {
res.send("Client already exists.");
}
db.close();
});
Любой другой способ для того чтобы достигнуть такого рода операций с легкостью?
Идеально для меня было бы что-то вроде:
var input = {...}; //assume here I have all the user input
if (db.collection('Clients').count({'email', input.email}, {limit: 1}) == 0 &&
db.collection('Blacklist').count({'email', input.email}, {limit: 1}) == 0 &&
db.collection('Sites').count({'domain', input.domain}, {limit: 1}) == 0) {
// INSERT HERE
} else {
res.send("Could not insert");
}
ну, я хочу быть асинхронными, но я не знаю точно, как стрелять эти три операции, а затем, когда все они завершены, выполнить обратный вызов. Возможно, что «асинк», предложенный Красу, - это путь. Спасибо :) –
Мы оба предложили использовать async. И @krasu была настолько умна, чтобы дать вам решение, которое, надеюсь, поможет вам больше, чем мои теплые слова ;-) – hgoebl