2015-06-27 40 views
0

我正在使用Orientjs从nodejs脚本访问Orientdb数据库,但服务器端函数不影响数据库。如何从Orientjs执行Orientdb服务器端函数?

服务器端脚本: 这个Javascript功能addTxt()取参数authortext

var db = orient.getGraph(); 
db.command('sql','insert into Message (author, text) VALUES ("'+author+'", "'+text+'")'); 
return "1"; 

查询:此功能在东方工作室经过测试,下面的查询工作:

SELECT addTxt("Testuser","foo") 

Nodejs/Orientjs:当使用Orientjs一个脚本的NodeJS调用这个函数,它只返回

[ { '@type': 'd', addTxt: '1', '@rid': { cluster: -2, position: 1 } } ] 

和数据库保持不变。

我曾尝试:

//some code 

var OrientDB = require('orientjs');  
var server = OrientDB({ 
    host: 'localhost', 
    port: 2424, 
}); 

var db = server.use({ 
    name: 'database', 
    username: 'admin', 
    password: 'pass' 

db.query('SELECT addTxt(:arg1, :arg2)', { 
    params: {arg1:"Testuser",arg2:"foo"} 
}).then(function (response){ 
    console.log(response); 
}); 

从Orientjs其他查询工作。

我在做什么错?是否有其他方式来调用服务器端功能?

+0

您可以发布你的函数的代码? – wolf4ood

+0

我将它添加到我的文章中。 – Bonzai

回答

1

你明确的回报 “1”

这是正确的返回

[ { '@type': 'd', addTxt: '1', '@rid': { cluster: -2, position: 1 } } ] 

尝试在函数直接明确的承诺

db.commit()

+0

谢谢!它正在使用db.commit()。返回“1”仅用于调试目的。 – Bonzai

+0

我遇到了同样的问题。如果使用其他函数内的函数编辑数据,则可能需要提交不同的级别。太糟糕了,没有更好的记录。 –

相关问题