巨大的JS奇怪的铸造错误



我是Massive的新手,但我真的很喜欢它。 在使用express.Router()并进行非常简单的数据库调用时:

router.get('/:id', function(req, res, next) {  
  db.accounts.find(req.params.id, function(err, results) {...});

我收到了一个错误:

错误:参数 0(条件)应为对象类型,但它是类型 值为 2 的字符串。 at Args (C:\Users\JMichelson\WebstormProjects\Proximityv6ode_modules\args-js\Args.js:399:10) at Object.exports.forArgs (C:\Users\JMichelson\WebstormProjects\Proximityv6ode_modules\massive\lib\arg_types.js:7 7:10) ...

这通过简单的强制转换解决了:

router.get('/:id', function(req, res, next) {  
  db.accounts.find(Number(req.params.id), function(err, results) {...});

但是我发现这种转换要求很奇怪,因为JavaScript应该根据需要自动转换。

我这样做是否正确?

我相信

find 需要一个数字,而参数以字符串的形式出现,因此 args 解析器会感到困惑。您可以在此处使用int.parse或执行您正在做的事情。Massive 在这方面有点固执己见:如果你愿意,你可以使用字符串键,但你必须具体使用"{id:"my string"}。

相关内容

最新更新