En express, ¿es posible PUBLICAR una matriz de objetos sin AJAX?
Estoy tratando de enviar una matriz de objetos usando un formulario regular, sin AJAX, y estoy descubriendo que en lugar de analizar el cuerpo de la solicitud en una matriz de objetos, solo tiene muchos campos correspondientes a los nombres de los objetos.
Sé que al enviar una serie de primitivas, simplemente rellena muchas entradas con el mismo nombre y se completará; sin embargo, parece que no puedo entender cómo aplicar esto a objetos complejos.
Mi código de formulario es bastante sencillo:
<div class="col-sm-9">
<div class="row">
<div class="col-md-6">
<div class="form">
<div class="form-group">
<label for="attachment[0].name" class="control-label">Name</label>
<input name="attachment[0].name" class="form-control" value="First Name" type="text">
</div>
<div class="form-group">
<label for="attachment[0].uri" class="control-label">URI</label>
<input name="attachment[0].uri" class="form-control" value="First URI" type="text">
</div>
<div class="form-group">
<label for="attachment[0].description" class="control-label">Description</label>
<textarea rows="4" value="First Description" name="attachment[0].description" class="form-control">First Description</textarea>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form">
<div class="form-group">
<label for="attachment[1].name" class="control-label" >Name</label>
<input name="attachment[1].name" class="form-control" value="Second Name" type="text">
</div>
<div class="form-group">
<label for="attachment[1].uri" class="control-label">URI</label>
<input name="attachment[1].uri" class="form-control" value="Second URI" type="text">
</div>
<div class="form-group">
<label for="attachment[1].description" class="control-label">Description</label>
<textarea rows="4" name="attachment[1].description" class="form-control">Second Description</textarea>
</div>
</div>
</div>
</div>
He hecho un repositorio de muestra que demuestra mi problema;https://github.com/xueye/express-form-issue donde puedes corrernode server.js
, navegar ahttp://localhost:3000
y enviar la entrada; el cuerpo de la solicitud aparecerá en su consola, donde debería aparecer como:
{ name: '',
type: '',
'attachment[0].name': 'First Name',
'attachment[0].uri': 'First URI',
'attachment[0].description': 'First Description',
'attachment[1].name': 'Second Name',
'attachment[1].uri': 'Second URI',
'attachment[1].description': 'Second Description' }
¿Es posible PUBLICAR datos de la manera que intento?