SequoiaDB 简介
安装部署
数据库实例
分布式引擎
SAC 管控中心
参考手册
常见问题及解答(FAQ)
版本信息
importOnce - 全局只导入执行一次指定的 js 文件。
importOnce(<filename>)
Global
在编写新的js脚本时存在重用现有脚本的可能性。可通过该命令将 js 文件导入并执行。
Note:
filename
( String, 必填 )
js文件的相对路径名或全路径名。
成功:无返回值。
失败:抛出异常。
importOnce()
函数常见异常如下:
错误码 | 错误类型 | 可能的原因 | 解决方法 |
---|---|---|---|
-152 | SDB_SPT_EVAL_FAIL | 导入的文件执行失败 | 根据错误信息提供的行号解决问题 |
当异常抛出时,可以通过getLastError()获取错误码, 或通过getLastErrMsg()获取错误信息。 可以参考常见错误处理指南了解更多内容。
v2.9及以上版本。
导入执行 helloWorld.js 文件多次,全局只导入执行一次。
1) helloWorld.js 内容如下:
function sayHello() { println( "hello world" ) ; } println( "import helloWorld.js" ) ;
2) 多次导入执行 helloWorld.js,只在第一次导入执行文件。
> importOnce( 'helloWorld.js' ) import helloWorld.js Takes 0.000849s. > importOnce( 'helloWorld.js' ) Takes 0.000354s. > sayHello() hello world Takes 0.000436s.
函数重复定义问题及规避方法
问题描述举例
1) funcDef.js 内容如下:
function test() { println( "defined in funcDef.js" ) ; }
2) test.js 内容如下:
importOnce( './funcDef.js' ) ; function test() { println( 'defined in test.js' ) ; } test() ;
3) 使用 sdb 执行 test.js 文件
$ ./sdb -f test.js defined in funcDef.js
可以发现,实际生效的是 funcDef.js 中的函数定义。
规避方法
可以通过将脚本中的函数定义放置到单独的文件再导入来规避这个问题
1) 增加文件 userDef.js,内容如下:
function test() { println( 'defined in userDef.js' ) ; }
2) test.js 内容改为:
importOnce( './funcDef.js' ) ; importOnce( './userDef.js' ) ; test() ;
3) 使用 sdb 执行 test.js 文件
$ ./sdb -f test.js defined in userDef.js
可以发现,实际生效的是 userDef.js 中的函数定义。