返回Javascript中函数作用域之外的变量
我尝试了这里发布的所有解决方案,但没有任何效果,因为我的问题有点不同 我有以下代码(调用外部neo4j模块的代码,将节点插入neo4j数据库,然后获取该节点的neo4j Id): 所有这些都可以正常工作,但是如何将node.id传递到函数范围之外(err,node),然后将该值添加到另一个对象 当我试着做一些像返回Javascript中函数作用域之外的变量,javascript,node.js,neo4j,Javascript,Node.js,Neo4j,我尝试了这里发布的所有解决方案,但没有任何效果,因为我的问题有点不同 我有以下代码(调用外部neo4j模块的代码,将节点插入neo4j数据库,然后获取该节点的neo4j Id): 所有这些都可以正常工作,但是如何将node.id传递到函数范围之外(err,node),然后将该值添加到另一个对象 当我试着做一些像 user.neo_id = node.id; 在上面的代码块之后,它是未定义的(当然) 尝试在命名函数内运行dbneo.insertNode,但如果我将返回值放入函数(err,node
user.neo_id = node.id;
在上面的代码块之后,它是未定义的(当然)
尝试在命名函数内运行dbneo.insertNode,但如果我将返回值放入函数(err,node),它仍然未定义
抱歉,如果这个问题有点简单/愚蠢,但我只是从JavaScript开始。谢谢大家! 好的,根据你的建议,我有了这个临时代码。可能不是最好的(可能会堵塞),但它解决了问题 我只是在确定从Neo4J数据库收到变量(node.id)后才调用下一个函数。如果有人知道一个更优雅的解决方案,请告诉我(特别是异步库)
不是,不是真的。。。不适合我…您应该使用
async
模块来实现这一点,组合多个调用并得到一个结果。或者完全依赖于不方便的事件是否没有更简单的方法将node.id变量从函数中取出到上下文中?我是说这是一件小事,肯定有办法,不是吗?:)
user.neo_id = node.id;
dbneo.insertNode({
auth_id: user.id,
username: user.name,
name: user.name
},function (err, node){
if(err) throw err;
// Output node properties.
console.log(node.data);
// Output node id.
console.log(node.id);
// RECEIVED node.id ? ONLY THEN SEND IT TO THE FUNCTION THAT NEEDS IT
send_neo_id(node.id);
});
// THIS IS THE FUNCTION THAT WAS NOT RECEIVING NODE.ID BEFORE:
function send_neo_id(neo_id) {
user.neo_id = neo_id;
db.set('user:id:' + user.name, id, function(err) {
if (err) return fn(err);
db.hmset('user:' + id, user, function(err) {
fn(err);
});
});
};