如何在模型和控制器之间使用 sequelize 发送查询结果
How to send a query result with sequelize between model and controller
我的问题如下:
我有 nodejs+expressjs,然后用 generator-express 生成了一个 mvc 项目,所以我有 mysql+sequelize+gulp app.
我连接到数据库并在模型中进行了查询,但我无法将结果传递给控制器并将其打印在屏幕上。
取而代之的是,我得到了一个变量未定义的错误。
型号 (regiones.js) 的代码是:
module.exports = function (sequelize, DataTypes) {
var regiones = sequelize.define('regiones', {
idregion: DataTypes.INTEGER,
nombre: DataTypes.STRING
}, {
classMethods: {
encontrar : function(){ sequelize
.query('SELECT * FROM regiones', { raw: true })
.spread(function(resul, m){console.log(resul); return resul;}); }
}
});
return regiones
};
控制器 (home.js) 的代码是:
var express = require('express'),
router = express.Router(),
db = require('../models');
module.exports = function (app) {
app.use('/', router);
};
router.get('/', function (req, res, next) {
resu = db.regiones.encontrar();
console.log("resu is : "+resu);
var arreglo = [];
for(i=0;i<resu.length;i++){
arreglo.push(resu[i].nombre);
}
db.Article.findAll().then(function (articles) {
res.render('index', {
title: arreglo[1],
articles: articles
});
});
});
"regiones"(抱歉,因为名称是西班牙语)有 "idregiones" 和 "nombre".
基本上我想知道如何在控制器中获取查询结果。
索引只打印:
Cannot read property 'length' of undefined TypeError: Cannot read property 'length' of undefined at C:\Users\Erick\farma1\app\controllers\home.js:15:17 at Layer.handle [as handle_request]
控制台打印模型中的所有元组,但在控制器中打印:
resu is : undefined
我搜索了很多,但它似乎是我的理论问题。
谢谢:)
您的 encontrar
函数没有 return 任何东西,这就是您未定义的原因。
查询是异步的,因此您需要向 returned promise 添加处理程序:
db.regiones.encontrar().then(function (resu) {...
我的问题如下:
我有 nodejs+expressjs,然后用 generator-express 生成了一个 mvc 项目,所以我有 mysql+sequelize+gulp app.
我连接到数据库并在模型中进行了查询,但我无法将结果传递给控制器并将其打印在屏幕上。
取而代之的是,我得到了一个变量未定义的错误。
型号 (regiones.js) 的代码是:
module.exports = function (sequelize, DataTypes) {
var regiones = sequelize.define('regiones', {
idregion: DataTypes.INTEGER,
nombre: DataTypes.STRING
}, {
classMethods: {
encontrar : function(){ sequelize
.query('SELECT * FROM regiones', { raw: true })
.spread(function(resul, m){console.log(resul); return resul;}); }
}
});
return regiones
};
控制器 (home.js) 的代码是:
var express = require('express'),
router = express.Router(),
db = require('../models');
module.exports = function (app) {
app.use('/', router);
};
router.get('/', function (req, res, next) {
resu = db.regiones.encontrar();
console.log("resu is : "+resu);
var arreglo = [];
for(i=0;i<resu.length;i++){
arreglo.push(resu[i].nombre);
}
db.Article.findAll().then(function (articles) {
res.render('index', {
title: arreglo[1],
articles: articles
});
});
});
"regiones"(抱歉,因为名称是西班牙语)有 "idregiones" 和 "nombre".
基本上我想知道如何在控制器中获取查询结果。
索引只打印:
Cannot read property 'length' of undefined TypeError: Cannot read property 'length' of undefined at C:\Users\Erick\farma1\app\controllers\home.js:15:17 at Layer.handle [as handle_request]
控制台打印模型中的所有元组,但在控制器中打印:
resu is : undefined
我搜索了很多,但它似乎是我的理论问题。
谢谢:)
您的 encontrar
函数没有 return 任何东西,这就是您未定义的原因。
查询是异步的,因此您需要向 returned promise 添加处理程序:
db.regiones.encontrar().then(function (resu) {...