0

我最近一直试图把我的头发拉出来,陷入我称之为微不足道的问题上。nodejs 中 mongoose 处理特定字段输入的方式。我有一个特定的问题,即 mongoose 的行为与 mongodb 的行为不同。

问题如下,如果我在字段名称中使用“-”符号,猫鼬似乎会对其进行一些奇怪的操作,而不是将其作为字符串的一部分接受。我试过运行几个正则表达式命令,一些 / 转义,但是它应该只接受输入,因为我知道我正在寻找的具体数据。

导致问题的代码如下:

datapoints.find({type: "charging-type", device: device._id})
          .exec(function(err, objects){
                   if(!objects){
                       log("Can't find objects");
                   }
                });

直接进入 mongo shell 并输入:

db.datapoints.count({type: "charging-type", device: device._id})

取出类型使一切正常,将类型更改为例如:分流电压,电流,......都可以正常工作。

因此,使用此 - 符号会出现问题。输入带有特殊字符的输入字符串作为精确字符串的方法是什么?

任何帮助将非常感激。

根据要求编辑;我没有收到任何错误,我得到 objects==undefined (或!objects),架构在下面。

var datapointSchema = mongoose.Schema({
   type:                { type: String, lowercase: true},
   value:               { type: Number},
   timestamp:           { type: Number},
   device:              { type: ObjectId, ref: "devices"} 
});

module.exports = mongoose.model('datapoints', datapointSchema)
4

1 回答 1

0

手动将 mongodb 中的字段从充电状态更新为充电状态,因为没有产生有用的答案。

这是一种解决方法,应视为未解决。

最终代码最终看起来像这样:

var cursor = calcpoints.find({device: device._id}).where('type').equals('chargingstatus').sort({timestamp: 1}).cursor();
于 2017-01-13T12:28:51.493 回答