【发布时间】:2016-12-01 15:33:51
【问题描述】:
我在 Mysql 中使用节点,这是我的问题。
我正在尝试在我的数据库中添加新照片并将其作为数组返回
这是我的功能:
function addNewPhotos(_id, files) {
var deferred = Q.defer();
var new_photos = []
_.each(files, function (one) {
var data = [
one.path,
_id,
0
]
var sql = 'INSERT INTO photos(photo_link, id_user, isProfil) VALUES (?, ?, ?)';
db.connection.query(sql, data, function (err, result) {
if (err)
deferred.reject(err.name + ': ' + err.message);
var sql = 'SELECT id_user, photo_link, isProfil FROM `photos` WHERE id = ?';
if (result){
db.connection.query(sql, [result.insertId], function(err, photo) {
if (err) deferred.reject(err.name + ': ' + err.message);
if (photo) {
new_photos.push(photo[0]);
}
});
}
})
})
deferred.resolve(Array.prototype.slice.call(new_photos));
return deferred.promise}
插入效果很好,但我无法检索结果以将它们发送回客户端。 (我的数组是空的)
谢谢。
【问题讨论】:
-
db.connection.query是异步的,所以它的回调之外的任何事情都会在回调被调用之前发生。
标签: mysql node.js underscore.js q deferred