Я создал схему Mongoose для коллекции в моей базе данных с именем «instruments». Я сделал это нестрогим, потому что записи, которые будут вставлены туда, могут иметь определенное неизвестное количество пар поле-значение. Имена и значения полей также неизвестны. Теперь он успешно сохраняет документы независимо от того, какие новые поля включены, но у меня есть проблема, когда при попытке получить эти документы и обратиться к динамическим парам поле-значение внутри, используя нотацию JS, я получаю неопределенное значение. Я мог бы успешно получить значение полей, которые я указал в своей схеме, хотя и когда я печатаю весь возвращенный документ, я вижу пары полей-значений, которые я ищу. Это естественное поведение мангуста? Если да, что я могу сделать, чтобы все еще иметь возможность получать поля не в схеме? См. Ниже коды для справки ...
Схема для инструмента
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var subConfigsSchema = new Schema({
alias: String,
value: String,
position: Number
}, {_id: false});
var configsSchema = new Schema({
bfq: [subConfigsSchema],
qpa: [subConfigsSchema],
fmb: [subConfigsSchema],
cz: [subConfigsSchema]
}, {_id: false});
var instrumentSchema = new Schema({
_id: {
type: Schema.Types.ObjectId,
required: true,
auto: true
},
configs: {
type: configsSchema,
required: true
}
},
{
strict: false,
versionKey: false
});
module.exports = mongoose.model('Instrument', instrumentSchema)
Пример запроса
Instrument.find({_id: '5c9b3747407939296c5af1da'}, function(err, data) {
if (err) throw err;
instrument = data[0];
console.log(instrument);
console.log(instrument._id);
console.log(instrument.inpname);
console.log(Instrument['inpname']);
});
Вывод прямо сейчас:
{ _id: 5c9b3747407939296c5af1da,
inpname: 'Nome',
configs:
{ bfq: [ [Object] ],
qpa: [ [Object] ],
fmb: [ [Object] ],
cz: [ [Object] ] } }
5c9b3747407939296c5af1da
undefined
undefined
Я ожидаю, что оба undefined будут 'Nome'.