utils.js 975 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. const languages = require('../config/language');
  2. const createError = require('http-errors');
  3. const ObjectId = require('mongoose').Types.ObjectId;
  4. /**
  5. * 根据http的Accept-Language返回locale
  6. * 有支持中文的则返回zh,其他一律返回en
  7. * @param {*} clientLocales
  8. */
  9. function getLocale(clientLocales) {
  10. if (!clientLocales) return 'en'; // 识别不到客户端的locale,则返回默认中文
  11. let langs = languages.map(e => e.code);
  12. for (let lang of langs) {
  13. if (clientLocales[0].includes(lang)) return lang;
  14. }
  15. return 'en'; // 客户端locale没有中文这一项,那么用英文
  16. }
  17. function ensureLanguage(lang) {
  18. let langs = languages.map(e => e.code);
  19. if (langs.includes(lang)) return lang;
  20. return 'en';
  21. }
  22. /**
  23. * 验证ID
  24. */
  25. function validateId(id, errMsg) {
  26. errMsg = errMsg || 'ID错误!';
  27. if (!ObjectId.isValid(id)) {
  28. throw createError(400, errMsg);
  29. }
  30. }
  31. module.exports = {
  32. getLocale, ensureLanguage, validateId
  33. }