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

我试图获取一个日期时间并在我的猫鼬模式中使用它,只是因为服务器返回了错误的时区,即使我更改了 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;

      })

    }

  }

});


任何帮助将不胜感激,谢谢。


aluckdog
浏览 88回答 1
1回答

慕标5832272

我不认为模型/模式可以是异步的,但由于您需要一个异步默认值,您可以试试这个: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);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript