Sequelize đang trả về một mảng instance
đối tượng trong người dùng. Một instance
đối tượng có một số phương thức tiện lợi được đính kèm cho phép bạn thực hiện trên nó.
Nếu bạn chỉ muốn lấy dữ liệu với các trường của mình dưới dạng khóa, hãy sử dụng get({plain: true})
. Ví dụ:đối với đối tượng đầu tiên trong mảng users[0].get({plain: true})
. Nếu bạn muốn tiếp tục sử dụng các phiên bản, bạn chỉ có thể sử dụng get với tên trường của bạn. Ví dụ:users[0].get('nombre')
.
Bạn cũng có thể truy cập các thuộc tính trực tiếp trên đối tượng, ngay cả khi chúng không được ghi lại, chẳng hạn như users[0].nombre
.
Chỉnh sửa
Điều này không liên quan đến câu hỏi ban đầu, nhưng nhận xét của bạn về một câu trả lời khác. Đảm bảo rằng bạn đang làm mọi thứ không đồng bộ. Mã phải là:
usuarioService.getAll = function (cb) {
Usuario.findAll().then(function (users) {
return cb(null, users);
}).catch(function(err) {
return cb(err);
});
}
Sau đó, khi gọi phương thức này, bạn sẽ làm như sau:
router.get('your_path', function(req, res, next) {
serv.getAll(function(err, users) {
if (err) {
// your err handling code
}
// users is now a valid js array
// could send it in res.json(users)
});
});
hoặc
Vì Sequelize sử dụng các lời hứa, nên thực hiện điều này bằng các lời hứa sẽ là cách tốt nhất.
usuarioService.getAll = function () {
return Usuario.findAll({ raw: true });
}
Sau đó, khi gọi phương thức này, bạn sẽ làm như sau:
router.get('your_path', function(req, res, next) {
serv.getAll().then(function(users) {
res.render('usuarios/index',{
users: users
})
}).catch(function(err) {
// your error handling code here
});
});