• eval()
    • 语法
    • 参数描述
    • 返回值
    • 示例

    eval()

    语法

    db.eval( <code> )

    根据需要填入 JavaScript 语句。同时可以在语句中调用已经创建好的存储过程。

    参数描述

    参数名参数类型描述是否必填
    code字符串JavaScript 语句或者创建好的存储过程函数

    Note:

    虽然语句中的所有输出都会被屏蔽,但还是建议不要加入任何打印语句。

    返回值

    (1) 执行成功则按照语句返回结果。可以将返回值直接赋值给另一个变量。如:var a = db.eval( 'db.foo.bar' ); a.find();

    (2) 执行失败会返回错误码及错误信息,可以通过 getLastErrMsg() 获取错误信息 或 通过 getLastError() 获取错误码。关于错误处理可以参考常见错误处理指南 。

    (3) 在函数执行结束前操作不会返回。中途退出则终止整个执行,但已经执行的代码不会被回滚。

    (4) 自定义返回值的长度有一定限制,参考 SequoiaDB 插入记录的最大长度。

    (5) 支持定义临时函数。如:db.eval( 'function sum(x,y){return x+y;} sum(1,2)' )

    (6) 全局 db 使用方式与 createProcedure() 相同。

    示例

    • 在eval() 方法中调用存储过程函数 sum
    1. //初始时 sum() 方法不存在,返回异常信息
    2. > var a = db.eval( 'sum(1,2)' );
    3. { "errmsg": "(nofile):1 ReferenceError: getCL is not defined", "retCode": -152 }
    4. (nofile):0 uncaught exception: -152
    5. //初始化 sum()
    6. > db.createProcedure( function sum(x,y){return x+y;} )
    7. //调用 sum()
    8. > db.eval( 'sum(1,2)' )
    9. 3
    • 在 eval() 方法中填写 JavaScript 语句
    1. > var rc = db.eval( "db.foo.bar" )
    2. > rc.find()
    3. {
    4. "_id": {
    5. "$oid": "5248d3867159ae144a000000"
    6. },
    7. "a": 1
    8. }
    9. {
    10. "_id": {
    11. "$oid": "5248d3897159ae144a000001"
    12. },
    13. "a": 2
    14. }...