У меня есть эта модель mongodb:
let businessLineDashboardRow = new Schema({
ref: {
type: String
},
riskstatements: {
type: String
},
maximpact: {
type: String
},
controleffectiveness: {
type: String
},
recommendedriskrating: {
type: String
},
frequency: {
type: String
},
impact: {
type: String
},
validatedreviewriskrating: {
type: String
},
rationalforriskadjustment: {
type: String
}
})
Я начал с простой вставки документа:
db.businesslinedashboards.find ()
{
"_id" : ObjectId("5d10a0a6df45c71a6c9dab26"),
"ref" : "R13", "riskstatements" : "blablablablablabla",
"maximpact" : "I AM TRYING TO CHANGE THIS VALUE",
"controleffectiveness" : "blablablablablabla",
"recommendedriskrating" : "blablablablablabla",
"frequency" : "blablablablablabla",
"impact" : "blablablablablabla",
"validatedreviewriskrating" : "blablablablablabla",
"rationalforriskadjustment" : "blablablablablabla", "__v" : 0
}
Как вы, возможно, заметили, я пытаюсь изменить значение maximpact, с помощью этого кода:
BusinessLineDashboard.findOne({
ref: 'R13'
}, (err, rowData) => {
if (err)
console.log(err);
else {
rowData.maximpact = 'THE DATA GETS STORED IN THE DB SUCCESFULLY'
console.log('rowData: ', rowData.maximpact);
//In the console: rowData: THE DATA GETS STORED IN THE DB SUCCESFULLY
}
});
Так что я подумал, что это сработало.Но когда я отправил второй запрос для получения данных таблицы, я заметил, что ничего не изменилось:
function getTableData(dbtable, callback) {
dbtable.find((err, tableData) => {
if (err)
console.log(err);
else {
callback(tableData)
}
}).then((tableData) => {});
}
getTableData(BusinessLineDashboard, (BLDtable) => {
BLDtable.forEach(rowData => {
if(rowData.ref==='R13'){
console.log('BLDrow: ', rowData.maximpact);
//In the console: BLDrow: I AM TRYING TO CHANGE THIS VALUE
}
})
})
Так что на самом деле ничего не изменилось.Я думаю, что это как-то связано с асинхронной природой JS.
Есть идеи, почему это происходит и, возможно, как это исправить?
Спасибо !!