Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Lo primero que vamos a hacer es crear el modelo y el controlador , para ello ejecutaremos la siguiente
sentencia en la consola:
Mediante el atributo api generamos el modelo y el controlador; Si quisiéramos crear únicamente el modelo
utilizaríamos el atributo model ; Y si quisiéramos crear únicamente el controlador utilizaríamos el atributo
controller .
/**
* User.js
*
* @description :: TODO: You might write a short summary of how this model works and what i
t represents here.
* @docs :: http://sailsjs.org/#!documentation/models
*/
module.exports = {
attributes: {
name: {
type: 'string',
required: true
},
lastname: {
type: 'string',
required: true
},
email: {
type: 'string',
required: true,
unique: true
},
encryptedPassword: {
type: 'string'
},
Además, podemos especi�car si el atributo es obligatorio, único, su valor por defecto, etc. Todo esto nos
permite crear un modelo de manera muy simple y nos abstrae a la hora de crearlo en la base de datos
gracias a waterline .
Dentro del modelo podemos crear los métodos que deseemos y unos callbacks que se ejecutarán antes de
ciertas acciones.
Callbacks on create
Callbacks on update
Callbacks on destroy
Después iremos a views y crearemos la carpeta user y dentro de dicha carpeta los �cheros index.ejs :
<div class="container">
<h3>Usuarios
<table class='table'>
<tr>
<th>ID
<th>Nombre
<th>Apellidos
<th>Email
<th>
<th>
<th>
</tr>
<% _.each(users, function(user) { %>
<tr data-id="<%= user.id %>" data-model="user">
<td><%= user.id %>
<td><%= user.name %>
<td><%= user.lastname %>
<td><%= user.email %>
<td><a href="/user/show/<%= user.id %>" class="btn btn-sm btn-primary">Show</a>
<td><a href="/user/edit/<%= user.id %>" class="btn btn-sm btn-warning">Edit</a>
<td><form action="/user/destroy/<%= user.id %>" method="POST">
<input type="hidden" name="_method" value="delete"/>
<input type="submit" class="btn btn-sm btn-danger" value="Delete"/>
<input type="hidden" name="_csrf" value="<%= _csrf %>" />
</form>
</td>
</tr>
<% }) %>
</table>
<a href="/user/new">Crear Nuevo Usuario</a>
</div>
Como podemos ver lo que hacemos es crear una tabla donde mostraremos la información de cada usuario
creado.
Respecto al código podemos ver la siguiente línea: <% _.each(user, function(user) { %>
Lo que hace es recorrer cada uno de los usuarios (users) y llama a la funcion function(user) donde le pasa el
user.id buscando dentro del modelo mediante data-id pasandole el nombre del modelo: data-
model="user" .
<% _.each(users, function(user) { %>
<tr data-id="<%= user.id %>" data-model="user">
<td><%= user.id %>
<td><%= user.name %>
<td><%= user.lastname %>
<td><%= user.email %>
<td><a href="/user/show/<%= user.id %>" class="btn btn-sm btn-primary">Show</a>
<td><a href="/user/edit/<%= user.id %>" class="btn btn-sm btn-warning">Edit</a>
<td><form action="/user/destroy/<%= user.id %>" method="POST">
<input type="hidden" name="_method" value="delete"/>
<input type="submit" class="btn btn-sm btn-danger" value="Delete"/>
<input type="hidden" name="_csrf" value="<%= _csrf %>" />
</form>
</td>
</tr>
<% }) %>
Ahora vamos al controlador y cremos los métodos para dichas vistas. Los nombres serán los que están en el
action .
/**
* UserController
*
* @description :: Server-side logic for managing users
* @help :: See http://links.sailsjs.org/docs/controllers
*/
module.exports = {
'new': function (req, res) {
res.view();
},
index: function (req, res) {
User.find(function foundUser (err, users) {
if(err) return res.redirect('/user/new');
res.view({
users: users
});
});
},
create: function(req, res) {
User.create(req.params.all(), function userCreated(err, user) {
if (err) return res.redirect('/user/new');
res.redirect('/user/show/' + user.id);
});
}
};
Finalmente, accedemos al archivo routes.js y añadimos una nueva ruta para que cuando accedamos a
cualquier vista de user no redireccione a 403, sino que permita renderizar las vistas. Para ello añadiremos
el siguiente código debajo de la ruta raíz con una coma (,).
module.exports.policies = {
// '*': true,
'user': {
'new': true,
index: 'sessionAuth',
'*': true
}
};
La parte comentada, // '*': true, signi�ca que cualquier vista que se muestre tendrá todos los accesos y
permisos abiertos.
Ahora hemos insertado 'user' que es el nombre del modelo y dentro damos los permisos para cada método
del controlador. Como podemos ver para poder acceder a 'index' deberemos estar autenticados, si no lo
estamos nos redireccionará la vista 'new' (dentro del metodo create: if (err) return res.redirect('/user
/new'); ). sessionAuth hace referencia al �chero sessionAuth.js que está en api/policies.
Y para el resto de operaciones ( '*' ) tenemos todos los accesos, es decir no tenemos ninguna reestricción,
como la necesidad de estar autenticados.
Miguel Leon
HACE 2 AÑOS
Hola Javier.
Gracias por tu colaboración.
Soy principiante. Hice todo lo indicado y con http://localhost:1337/user pero sale un error, prohibiendo el ingreso:
"You don't have permission to see the page you're trying to reach.".
Luis Sanchez
HACE 2 AÑOS
revisa el api/controllers/userController.js
dale http://localhost:1337/user/new
Ilmar López
HACE 2 AÑOS, 2 MESES
Buen aporte amigo, soy novato utilizando estas tecnologías y javaScript, me gustaría saber donde mas puedo encontrar tutoriales como este,
mucha gracias.
(https://mixpanel.com/f/partner) (https://www.enisa.es)
Avenida República Argentina, 26. 41011 Sevilla. +34 954 002 382 © 2017. ( H T T
P S(://
H TWTP
W(SH
W.FAC
://
T T
W
P S(IH
://
ETB
TTW
T
O
EP
R
O
W(S.C
H
K://
W.I
T
O.CT
T.M
MOP
N/O
M
SSE
://
TAG
/O
P
/OEPSN
PR
E.L
EW
N
AN
IN
W
M
E