【发布时间】:2017-04-01 00:20:21
【问题描述】:
我在使用 Promise 时遇到问题,当我尝试检索数据时显示为 Promise { <pending> } 我已经查找了一些相关信息,但我不明白如何结束它。
如果有人可以帮助我,我将不胜感激。
提前致谢
/bucket.js
'use strict'
const connection = require('../server/models'),
oracledb = require('oracledb'),
conexion = oracledb.getConnection(connection)
oracledb.outFormat = oracledb.OBJECT
module.exports = (data) => {
console.log("RES: ", filter(data));
return filter(data)
}
const filter = (value) => {
return conexion
.then(con => {
return con.execute(
`SELECT id_application, name, description, creation_date ` +
`FROM application `
).then(bucket => {
return con.execute(
`SELECT id_definition, id_application, field_name_original,
field_name_new, column_name, position, id_type_data,
field_size, creation_date, description, filter, visible ` +
`FROM definition ` +
`WHERE id_application in (${getApp(value.data)}) ` +
`AND ${value['search']} = '${value['value']}' `
).then(definitions => { return creaJSON(bucket, definitions) } )
.catch(error => { return {"error": error} })
})
.catch(error => { return {"error": error} })
})
.catch(error => { return {"error": error} })
}
const getApp = (value) => {
return value.map(obj => {
return `'${obj.ID_APPLICATION}'`
})
}
const creaJSON = (buckets, definitions) => {
var df = new Array()
buckets['rows'].map(obj => {
definitions['rows'].map(def => {
if(obj['ID_APPLICATION'] == def['ID_APPLICATION']) df.push(def)
})
obj['Definitions'] = df
df = []
})
return buckets.rows
}
更新
我的错误不仅仅出现在上面的代码中。我正在使用套接字以及 Bergi 的答案,我无法在客户端得到回应。我有下一个代码:
socket.on('bucketVisibleT', (data) => {
buckets = {data:data,search:'VISIBLE',value:'T'}
io.sockets.emit('bucketVisibleFs', require('./bucket')(buckets))
})
所以我不得不改变下一个,现在我在我的客户中得到了回应。
socket.on('bucketVisibleT', (data) => {
buckets = {data:data,search:'VISIBLE',value:'T'}
require('./bucket')(buckets).then(res => {
io.sockets.emit('bucketVisibleTs', res)
})
})
我很抱歉,因为我没有很好地解释我的问题,但我认为这是在我的第一个代码中
【问题讨论】:
-
您在哪里以及如何尝试检索该数据?当你的函数返回一个 Promise 时,你的函数就可以工作了——你只需要等待它异步完成来访问数据。
-
第 11 行:返回过滤器(数据)
标签: node.js promise es6-promise