0

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

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

我得到一个错误:

错误:参数 0(条件)应该是类型 Object,但它是类型字符串,值为 2。在 Args (C:\Users\JMichelson\WebstormProjects\Proximityv6\node_modules\args-js\Args.js:399:10) at Object.exports.forArgs (C:\Users\JMichelson\WebstormProjects\Proximityv6\node_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 应该根据需要自动转换。

我这样做正确吗?

4

1 回答 1

1

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

于 2016-07-11T19:43:59.160 回答