【发布时间】:2012-01-17 20:17:41
【问题描述】:
[编辑]:我用这个更新了上一个问题,使用了一个非常具体的可重现示例。
这是我的整个程序。
我分别用集合A 和B 创建了两个架构ASchema 和BSchema,创建了两个对象a 和b,并尝试按顺序保存它们——也就是说,首先是a,然后是@987654328 @。
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 shell,我发现一个集合as(a被mongoose复数,没关系)已经创建,我可以看到其中保存的文档db.as.find()。但是,我找不到集合 bs。
调整:
在保存代码中,交换 a 和 b 的位置(保存顺序)导致b 被保存,a 不被保存。所以问题不在于a 或b。
问题:为什么不保存下一个文档?
【问题讨论】:
-
错误似乎不是来自这段代码,看起来完全没问题。我认为代理或类似的东西可能有错误。你能console.log吗?
-
人员/代理没有问题,因为在代码中交换他们的位置会产生相同的效果 - 保存“内部”事物时它总是挂起。
-
用更通用的东西编辑了这个例子,任何人都可以测试。
标签: javascript mongodb node.js mongoose