我在mongoDB和Mongoose上遇到麻烦。我需要将数据存储在mongoDB中,因为我将其用于保存设置。应用初始化时必须加载设置。问题在于数据库并不总是返回数据。这是使所有内容清晰的屏幕截图:
1-3个步骤是随机完成的! 我的问题是:如何正确连接数据库?数据库连接是否有问题? (操作系统-Linux Mint 19)
我尝试了几种连接到该数据库的方法:
Setup.find({})。exec()
Setup.findById('...')。exec()
等
mongoose.connect('mongodb://localhost:27017/config', { useNewUrlParser: true });
const setupSchema = new Schema({
eula: Boolean,
lang: String,
styles: Number
});
mongoose.set('debug', true);
setupSchema.set('collection', 'setup');
const Setup = mongoose.model('Setup', setupSchema);
var eula, lang, styles;
Setup.findById('5ccfaf5a0c3c1612d4e2c905', function(err, setting){
if (err) {
console.log('Setup Init error');
console.log(err);
} else {
console.log('Setup Contents');
if (setting !== null || setting !== undefined){
console.log(setting[0]);
// eula = setting[0].eula;
// lang = setting[0].lang;
// styles = setting[0].styles;
} else {
console.log('Setting is null');
}
}
});
我希望数据总是会返回。 实际输出显示在屏幕截图上(请参见上文)。
UPD:我现在已经达到了这种状态(在下面的屏幕截图中),但是仍然不是很好...
UPD2:我找到了解决方案!我尝试使用MongoDB.Client,而不是猫鼬。
答案 0 :(得分:1)
我猜findById函数将返回一个对象而不是一个数组,这就是为什么会出现此错误的原因。 请尝试:
Setup.findById('5ccfaf5a0c3c1612d4e2c905', function(err, setting){
if (err) {
console.log('Setup Init error');
console.log(err);
} else {
console.log('Setup Contents');
if (setting){
console.log(setting);
// eula = setting.eula;
// lang = setting.lang;
// styles = setting.styles;
} else {
console.log('Setting is null');
}
}
});
更新的代码:
Setup.findOne({id :'5ccfaf5a0c3c1612d4e2c905'}, function(err, setting){
if (err) {
console.log('Setup Init error');
console.log(err);
} else {
console.log('Setup Contents');
if (setting){
console.log(setting);
// eula = setting.eula;
// lang = setting.lang;
// styles = setting.styles;
} else {
console.log('Setting is null');
}
}
});