2014-03-26 55 views
2

我有快遞JS的一個項目,我使用的貓鼬「選擇」控制,我可以填寫一個選擇控制有:節點JS - 如何填寫多用貓鼬

app.get('/new_alumno', alumno.create); 

,但現在我想填寫多個選擇控件,但我不知道如何從我的控制器向我的視圖發送兩個以上的值。

我app.js文件包含以下代碼

var express = require('express'); 
var routes = require('./routes'); 
var user = require('./routes/user'); 
var http = require('http'); 
var path = require('path'); 

//Reference to the controllers 
var alumno = require('./controllers/ctrl_alumno'); 

var app = express(); 

// all environments 
app.set('port', process.env.PORT || 3000); 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'jade'); 
app.use(express.favicon()); 
app.use(express.logger('dev')); 
app.use(express.json()); 
app.use(express.urlencoded()); 
app.use(express.methodOverride()); 
app.use(app.router); 
app.use(express.static(path.join(__dirname, 'public'))); 

// development only 
if ('development' == app.get('env')) { 
    app.use(express.errorHandler()); 
} 

//Routes 
app.get('/', routes.index);  
app.get('/alumnos', alumno.listalumnos); 
app.get('/new_alumno', alumno.create); 
app.post('/save_alumno', alumno.save); 

http.createServer(app).listen(app.get('port'), function(){ 
    console.log('Express server listening on port ' + app.get('port')); 
}); 

我控制器ctrl_alumno.js包含以下代碼:

// Crear conexion con MongoDB 
var mongoose = require('mongoose'); 
var db_link = 'mongodb://localhost/alumnosnormalized'; 
var db = mongoose.createConnection(db_link); 

// Variables para cargar el modelo 
var alumno_schema = require('../models/alumno'); 
var carrera_schema = require('../models/carrera'); 
var entidad_schema = require('../models/entidad'); 

var Alumno = db.model('Alumno', alumno_schema); 
var Carrera = db.model('Carrera', carrera_schema); 
var Entidad = db.model('Entidad', entidad_schema); 

exports.create = function(req, res, next){ 

    Carrera.find(getCarreras); 

    function getCarreras(err, carrera){ 
     if(err) 
     { 
      console.log(err); 
      return next(); 
     } 
     return res.render('newalumno',{title:'Lista de alumnos', carreras: carrera}); 
    }; 
}; 

我的學生視圖包含以下代碼:

block content 
    h1= title 
    div(class="form_settings") 
     h2 Ingrese la informacion necesaria para registrar una Entidad 
     form#formAddPlayer(name="addalumno",method="post",action="/save_alumno") 
      p 
       input#inputNombre(class="contact", type="text", placeholder="Nombre del Alumno", name="nombreAlumno") 
      p 
       input#inputApaterno(class="contact", type="text", placeholder="Apellido Paterno", name="aPaterno") 
      p 
       input#inputAmaterno(class="contact", type="text", placeholder="Apellido Materno", name="aMaterno") 
      p 
       select(name="idCarrera") 
        option(value="",selected="selected") Seleccione un elemento de la lista 
        each item, i in carreras      
         option(value='#{item._id}') #{item.descripcion}       
      p 
       button#btnSubmit(class="submit", type="submit") Guardar Alumno 

我只能使用此代碼填充單個選擇控件,它可以工作。

<select name="idCarrera"> 
    <option value="" selected="selected">Seleccione un elemento de la lista</option> 
    <option value="5330a2a7ab37e2b810000001">Quimica</option> 
    <option value="5330a575a20912b013000001">Mecanica</option> 
    <option value="5331c63f6ddf2b4c0c000001">Contaduria</option> 
</select> 

任何人都可以幫助我從我的控制器傳遞多個值,或者使用貓鼬填充多個選擇控件?

回答

1

您可以使用異步並行,然後返回結果數組。並行方法接受一個包含回調參數的異步函數數組,並返回結果數組。您可以根據需要將任意數量的功能添加到陣列中。

https://github.com/caolan/async#parallel

例如

async.parallel([ 
     function(callback) { 
      Alumno.find({}, function(err, result){ 
       callback(err, result); 
      }); 
     }, 
     function(callback) { 
      Carrera.find({}, function(err, result){ 
       callback(err, result); 
      }); 
     } 
    ], 
    function(err, results) { 
     // Results here will be an array results returned from the database. 
     // You can manipulate the results here before returning to the view. 
     return res.render('view', {results : results}); 
    });