繁体   English   中英

MongoDb 为什么数据没有存储在数据库中?

[英]MongoDb Why isn't the data being stored in the database?

我有这个 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 的异步特性有关。
知道为什么会发生这种情况,也许如何解决?
谢谢!!

您必须更新与 ref:'R13' 相对应的 BusinessLineDashboard 表中的 maximpact。 没有更新你怎么能改变这个值。

使用 BusinessLineDashboard.update({ref: 'R13'},{maximpact : '数据成功存储在数据库中'})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM