私は最近、私が些細な問題と呼ぶものに行き詰まり、髪を引っ張ろうとしています。nodejs の mongoose が特定のフィールド入力を処理する方法。mongose が mongodb と同じように動作しないという特定の問題があります。
問題は次のとおりです。フィールド名に「-」記号を使用すると、マングースは文字列の一部として受け入れるのではなく、奇妙な操作を実行しているように見えます。いくつかの正規表現コマンド、いくつかの/エスケープを実行しようとしましたが、探している特定のデータを知っているので、文字通り入力を受け取るだけです。
問題の原因となっているコードは次のとおりです。
datapoints.find({type: "charging-type", device: device._id})
.exec(function(err, objects){
if(!objects){
log("Can't find objects");
}
});
mongo シェルに直接入り、次のように入力します。
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)