[править]: я обновил предыдущий вопрос этим, используя очень специфический воспроизводимый пример.
Это вся моя программа.
Я создаю две схемы ASchema
и BSchema
с коллекциями A
и B
соответственно, создаю два объекта a
и b
и пытаюсь сохранить их последовательно - то есть сначалаa
затем b
.
mongoose = require('mongoose'),
Schema = mongoose.Schema;
mongoose.connect('mongodb://localhost/test');
ASchema = new Schema({
text: String
});
BSchema = new Schema({
val: Number
});
A = mongoose.model('A', ASchema);
B = mongoose.model('B', BSchema);
a = new A({text: 'this is a'});
b = new B({val: 5});
a.save(function(err) {
if(err) console.log(err.message);
else {
console.log('saved a : ', a);
b.save(function(err) {
if(err) console.log(err.message);
else {
console.log('saved b : ', b);
}
});
}
});
mongoose.disconnect();
То, что я ожидаю, должно произойти:
Должно быть напечатано saved a :
, за которым следует документ a, а затем saved b :
,сопровождаемый документом b.
Что на самом деле происходит:
Печатается saved a : { text: 'this is a', _id: 4ee4cab00d2c35fc04000001 }
и ничего более.Программа также не останавливается;он остается «застрявшим».
Просматривая оболочку mongo, я обнаружил, что коллекция as
(a
во множественном числе mongoose, это нормально) была создана, и я могу увидеть в ней сохраненный документ с db.as.find()
.Однако я не могу найти коллекцию bs
.
Твик:
В коде сохранения меняются местами a
и b
(порядок сохранения) причинb
для сохранения и a
для сохранения.Так что проблема конкретно не в a
или b
.
Вопрос: Почему не сохраняется следующий документ?