我希望允许API调用方通过Geohash或普通地理坐标输入地理数据。我的Joi验证模式当前如下:
const schema = Joi.object({
geoHash: Joi.string(),
lat: Joi.number().precision(8),
lon: Joi.number().precision(8),
});
那么,我如何需要geohash或lat和lon的组合呢?在验证之后,我如何发现使用了这两个选项中的哪一个?
模式验证需要geoHash或lat+lon组合:
const schema = Joi.object({
geoHash: Joi.string(),
lat: Joi.number().precision(8),
lon: Joi
.number()
.precision(8)
.when('lat', {
not: undefined,
then: Joi.required(),
})
}).or('geoHash', 'lat');
我不确定我们是否能找到使用了哪种验证。我翻遍了文件,找不到任何文件。
你可以有一个简单的Js代码:
const isGeoHashUsed = !!req.query.geoHash // assuming it's a GET request
如果为true,则使用geoHash。否则,使用lat+lon。