更改 mongoose 架构后,mongo DB 中的数据类型没有更改

问题描述 投票:0回答:1

我最近将猫鼬模式从

String
更改为
Number
。当我从数据库读取数据时,它显示为数字,但是当我尝试根据更改的属性创建过滤器时,我没有得到在进行架构更改之前保存的任何文档。当我使用 Robo 3T 检查时,我看到数据类型仍然显示
string
。我想全部改成Number。即使我更新文档后,数据类型似乎也没有改变。

const mySchema = new mongoose.Schema(

 {
    status: {
      type: Number,
      default: 1
    }
}...)

这是它在数据库中的样子

我将不胜感激任何帮助

mongodb mongoose mongoose-schema
1个回答
0
投票

我不再使用

findOne

mySchema.statics.updateStatus = async function(id, status){
  try{
    const record = await this.findOne({_id: id});
    if(record){
      record.status = parseInt(status);
    }
    const updatedRecord = await record.save();
    return updatedRecord;
  }catch(err){
    return null;
  }
}

使用

fineOneAndUpdate

mySchema.statics.updateStatus = async function(id, status){
  try{
    const record = await this.findOneAndUpdate({ _id:id }, {status}, {
      returnOriginal: false
    });
  
    return record;
  }catch(err){
    return null;
  }
}

并且它更新了数据库中的数据类型。

© www.soinside.com 2019 - 2024. All rights reserved.