获取javax.script.ScriptException:com.mongodb.MongoException:未经授权可查询default.paymentHeader

时间:2019-03-26 08:16:14

标签: mongodb groovy jmeter

我正在使用Groovy在MongoDB上进行查询,但在MongoDB中进行查询时未获得授权。您能检查我的脚本是否有问题吗?

DBName默认 收款paymentHeader

import com.mongodb.*;
import com.mongodb.DB;
import com.mongodb.MongoCredential;
import org.apache.jmeter.protocol.mongodb.config.MongoDBHolder;
import com.mongodb.BasicDBObject; 
import com.mongodb.DBCollection;

//Get DB
DB db = MongoDBHolder.getDBFromSource("SITDB","${DBName}","${username}","${password}");
boolean auth = db.authenticate("${username}","${password}".toCharArray());

//Get Collection
DBCollection collection = db.getCollection("${Collection}");

//Find ApplicationNum
//collection.find({applicationNum: "${applicationId}"});
BasicDBObject query = new BasicDBObject("applicationNum", "${applicationId}");
DBObject result = collection.findOne(query);
SampleResult.setResponseData(result.toString().getBytes());

响应码:500 响应消息:javax.script.ScriptException:com.mongodb.MongoException:未经授权对default.paymentHeader进行查询

1 个答案:

答案 0 :(得分:1)

JMeter对此没有任何帮助,您需要为${username}提供read permissionsdefault.paymentHeader集合中。

另外请注意,您不应将JMeter Functions or Variables引用为${username},而应将vars shorthand用于JMeterVariables类,而不要像vars.get('username')

更多信息:JSR223 Sampler Documentation,尤其是:

  

JMeter在将脚本字段传递给解释器之前先处理函数和变量引用,因此这些引用将只解析一次。脚本文件中的变量和函数引用将逐字传递给解释器,这可能会导致语法错误。为了使用运行时变量,请使用适当的props方法,例如

props.get("START.HMS");

props.put("PROP1","1234");