nodejs
, expressjs
, mongodb
. На реальном сайте используется mongolab
. Я делаю запрос POST
от переднего конца к серверу, и сервер обрабатывает запрос, удаляя одну соответствующую запись из базы данных. Работа сервера (сделано в ExpressJS
выглядит следующим образом:MongoDB/MongoLab Удалить запрос работает локально, но удаляет базу данных, когда живет
var removeStuff = req.body.removeStuff;
var currentId = req.user._id;
var currentEmail = req.user.email;
myStuff.findOne({
$and: [
{ $or: [{stuff: removeStuff}] },
{ $or: [{apid:currentId},{apiemail:currentEmail}] }
]
}, function (err, currentStuff) {
currentStuff.remove();
res.send('Stuff was removed from database...')
});
Что действительно странно, что это прекрасно работает для сайта, когда я бегу это на localhost
Но когда это живой, делающего запрос удаляет ALL. записи из базы данных
Это невозможно, если это не ошибка с мангуста. В другом месте должен быть код, который является нарушающим код. Вы вызываете '.remove()' в документе, который не влияет на коллекцию. – cdbajorin
Хммм Я все искал для ошибок ... снова он отлично работает на локальном хосте, так что, может быть, это может быть с мангустом? Я видел, что раньше была ошибка такого типа, но это было в 2013 году https://github.com/Automattic/mongoose/issues/1649 – maudulus
'.remove()' вызывает 'collection.remove (obj)' где 'obj '- это весь документ, на который вы его вызываете. Таким образом, единственное возможное совпадение само по себе (поскольку оно включает в себя его идентификатор). посмотрите, что он делает [здесь] (https://github.com/Automattic/mongoose/blob/master/lib/model.js#L637-L686) для самого вызова и [здесь] (https://github.com/Automattic/mongoose/blob/master/lib/model.js#L585-L609) для объяснения того, что он использует в качестве соответствия. (проверьте, какую версию вы используете) – cdbajorin