我在使用.find()命令时遇到问题,我只会在下面的例子中收到“TEMP”的值:“31”
[
{
"_id": "57fb8cfee9eb8fc824000003",
"data": "2016-10 10T12:43:42.168Z",
"temp": "31",
"__v": 0
}
]
我对Node.js的看法是:
router.get('/ Temperature', function (req, res) {
SHTemp.find({}).sort({_ id: -1}).limit(1)
.exec(function (err, lasttemp) {
if (err) {
res.send('error found');
} else {
res.send(lasttemp);
}
})
})
这个想法是lasttemp
,发送集合中记录的最后一个温度的值。我怎么能这样做?
答案 0 :(得分:1)
find
将始终返回一个包含与查询匹配的所有文档的数组。如果你只想要' 31'在这种情况下,最简单的方法就是:
router.get('/ Temperature', function (req, res) {
SHTemp.find({}).sort({_ id: -1}).limit(1)
.exec(function (err, temps) {
if (err or !temps) {
res.send('error found');
} else {
res.send(temps[0].temp);
}
})
})
您还可以检查findOne,以便只返回一个文档而无需限制为一个并获取数组的第一个元素。
答案 1 :(得分:0)
尝试下面。它将返回lasttemp的键值
router.get('/Temperature', function (req, res) {
SHTemp.find({},{temp:1}).sort({_ id: -1}).limit(1)
.exec(function (err, lasttemp) {
if (err) {
res.send('error found');
} else {
res.send(lasttemp);
}
})
})
答案 2 :(得分:0)
如果您想获得最近的温度,请尝试在data
字段上进行排序:SHTemp.find({}).sort({data: -1}).limit(1)
此外,理想情况下,您应该将其从data
重命名为date
并将类型设置为Date