Я запускаю следующее из консоли mongodb (он находится в файле js, который называется через load()
), но обратный вызов insert
никогда не запускается, хотя все вставки базы данных происходят так, как ожидалось. Может ли кто-нибудь понять, почему?Почему мой обратный вызов вставки не запускается?
db.oldsets.find().forEach(function (set) {
var newSet = {
tunes: [],
keys: []
};
set.tunes.forEach(function (arr) {
if (newSet) {
var tune = db.oldtunes.findOne({
_id: arr.tune
})
var newTune = db.getSiblingDB('jnr_local').tunes.findOne({
sessionId: tune.sessionId
})
if (newTune) {
newSet.tunes.push(newTune._id);
newSet.keys.push(arr.root + tune.mode);
} else {
newSet = null;
}
}
})
print('out') // outputs for every iteration
if (newSet) {
db.sets.insert(newSet, function (err, doc) {
print('in') // never outputs
db.practices.insert({
type: 'set',
// srcId: doc[0]._id,
stickyness: 0
});
});
} else {
print('else') // never outputs
db.dodgySets.insert(set);
}
});
Я не думаю, что оболочка манго соответствует node.js api. Это означает, что нет обратных вызовов. http://docs.mongodb.org/v2.2/reference/method/db.collection.insert/#db.collection.insert –
Это лучшее, что я нашел до сих пор http://stackoverflow.com/questions/5789001/ident-last-document-from-mongodb-find-result-set – wheresrhys