¿Qué significa ‘extendido’ en Express 4.0?

Estoy usando Express y también body-parser en mi aplicación.

app.use(bodyParser.urlencoded({ extended: false })); 

Pero, ¿qué significa ‘extendido’ en Express 4.0?

encontré esto

 extended - parse extended syntax with the qs module. 

Sin embargo, todavía no puedo entender lo que significa.

Si extended es false , no puede publicar “objeto nested”

 person[name] = 'cw' // Nested Object = { person: { name: cw } } 

Si extended es true , puedes hacer lo que quieras.

De los documentos de Body-Parser:

Un nuevo objeto de cuerpo que contiene los datos analizados se rellena en el objeto de solicitud después del middleware (es decir, req.body). Este objeto contendrá pares clave-valor, donde el valor puede ser una cadena o una matriz (cuando extendido es falso), o cualquier tipo (cuando extendido es verdadero).

Y

La opción extendida permite elegir entre analizar los datos codificados en URL con la biblioteca de cadenas de consulta (cuando es falso) o la biblioteca qs (cuando es verdadera). La syntax “extendida” permite que los objetos ricos y las matrices se codifiquen en el formato de encoding de URL, lo que permite una experiencia similar a JSON con encoding de URL. Para más información, consulte la biblioteca de qs.

Básicamente extendido le permite analizar objetos completos.

Analizador de cuerpo: url codificado

Cuando la propiedad extended se establece en true , los datos codificados en URL se analizarán con la biblioteca qs .

De lo contrario,

cuando la propiedad extended se establece en false , los datos codificados en la URL se analizarán con la biblioteca de cadenas de consulta .


La diferencia entre `qs library` y` querystring library`

  • La biblioteca qs le permite crear un objeto nested a partir de su cadena de consulta.

     var qs = require("qs") var result = qs.parse("person[name]=bobby&person[age]=3") console.log(result) // { person: { name: 'bobby', age: '3' } } 

  • La biblioteca de cadenas de consulta no admite la creación de un objeto nested a partir de su cadena de consulta.

     var queryString = require("query-string") var result = queryString.parse("person[name]=bobby&person[age]=3") console.log(result) // { 'person[age]': '3', 'person[name]': 'bobby' } 

  • La biblioteca qs no filtrará ‘?’ de la cadena de consulta.

     var qs = require("qs") var result = qs.parse("?a=b") console.log(result) // { '?a': 'b' } 

  • la biblioteca de cadenas de consulta filtrará ‘?’ de la cadena de consulta.

     var queryString = require("query-string") var result = queryString.parse("?a=b") console.log(result) // { a: 'b' } 

 app.use(bodyParser.urlencoded({ extended: true })) // for parsing application/x-www-form-urlencoded 

Para obtener más información, puede consultar la respuesta de Leonid Beschastny y npm compare qs vs query-string .