parser.js 667 字节
Newer Older
LukeLiou's avatar
LukeLiou 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
import {
  getType,
  SYMBOL_CLIENT_DB_INTERNAL
} from './utils.js'

export default function parser (param) {
  switch (getType(param)) {
    case 'array':
      return param.map(item => parser(item))
    case 'object':
      if (param._internalType === SYMBOL_CLIENT_DB_INTERNAL) {
        return param
      }
      Object.keys(param).forEach(key => {
        param[key] = parser(param[key])
      })
      return param
    case 'regexp':
      return {
        $regexp: {
          source: param.source,
          flags: param.flags
        }
      }
    case 'date':
      return {
        $date: param.toISOString()
      }
    default:
      return param
  }
}