为了账号安全,请及时绑定邮箱和手机立即绑定

如何在猫鼬模式中使用异步默认值?

如何在猫鼬模式中使用异步默认值?

aluckdog 2022-11-11 16:59:00
我试图获取一个日期时间并在我的猫鼬模式中使用它,只是因为服务器返回了错误的时区,即使我更改了 heroku 上的设置。我正在尝试使用 axios 请求在架构上设置默认日期。但它不起作用,因为它是一个承诺。有什么办法可以让我以某种方式提取价值吗?我到处找,但他们都使用回调,但我不认为我可以在这里做到这一点。var pricesSchema = mongoose.Schema({  USD_LOWEST: {    type: Number,    required: true  },  USD_LOW: {    type: Number,    required: true  },  USD_HIGH: {    type: Number,    required: true  },  USD_HIGHEST: {    type: Number,    required: true  },  USD_CBA: {    type: Number,    required: true  },  BTC_PRICE: {    type: Number,    required: true  },  date: {    type: String,    default : function(){      axios.get('http://worldtimeapi.org/api/timezone/Asia/Yerevan').then(data=>{        return data.datetime;      })    }  }});任何帮助将不胜感激,谢谢。
查看完整描述

1 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

我不认为模型/模式可以是异步的,但由于您需要一个异步默认值,您可以试试这个:


const pricesSchema = mongoose.Schema({

  USD_LOWEST: {

    type: Number,

    required: true,

  },

  USD_LOW: {

    type: Number,

    required: true,

  },

  USD_HIGH: {

    type: Number,

    required: true,

  },

  USD_HIGHEST: {

    type: Number,

    required: true,

  },

  USD_CBA: {

    type: Number,

    required: true,

  },

  BTC_PRICE: {

    type: Number,

    required: true,

  },

  date: {

    type: Date,

    expires: 60 * 60 * 24 * 7,

  },

});



pricesSchema.pre('save', async function () {

  if (!this.date) {

    const response = await axios.get('http://worldtimeapi.org/api/timezone/Asia/Yerevan');

    this.date = response.data.datetime;

  }

});


export const Price = mongoose.model('Prices', pricesSchema);


查看完整回答
反对 回复 2022-11-11
  • 1 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信