我已经使用 arangojs 几个月了,最近我的一些代码开始失败,这些代码以前可以工作,关于在使用模板字符串和 aqlQuery 时将变量用作集合名称。
我在 Windows 10 上使用 Node.js 4.4.0。
此示例代码显示错误:
// Issue with template string and arangodb with collection names
var arango = require('arangojs');
var aqlQuery = require('arangojs').aqlQuery;
var db = new arango('http://127.0.0.1:8529');
var collectionName = 'sampleCollection';
// Connect to _system
db.useDatabase('_system');
var sampleText = "Testing Only";
/* Add a record to the collection, using template string with collectionName
* If I use ${collectionName} I get the error code 400:
* error: 'bind parameter \'bind parameter \'value1\' has an invalid value or type near
* \'RETURN NEW._key\n
* \' at position 4:9\' has an invalid value or type (while parsing)',
*
* If I write out the collection name, or use a normal db.query style query without using
* aqlQuery and template strings and pass the table name as @collectionName, then it works
* fine.
*/
db.query(aqlQuery`
INSERT { "something": ${sampleText} }
IN ${collectionName}
RETURN NEW._key
`).then(cursor =>
cursor.all()
).then(vals => {
console.log(`Created a new document with a _key of ${vals[0]}`)
}).catch(err => {
console.log(err)
});
我已经在一个干净的 npm 安装上测试了这个,只有 arangojs 4.3.0 和 Node 4.4.0 或 Node 5.5.0(使用 nodist)。
有没有其他人看到模板字符串中的集合名称有问题?