javascript - 如何使用 NodeJS 仅将 NeDB 数据库中的某些字段存储到数组中
问题描述
我有一个嵌入式 NeDB 数据库,其中包含多个具有多个字段的条目,我希望只从每个条目中获取日期并将其存储到一个数组中。我正在使用 NeDB、NodeJS 和 express。
数据集如下所示:
{"goalName":"swim 5km","details":"I want to swim 5km","date":"2021-05-15","completed":false,"author":"somename","_id":"BMnvTm54rNbwc9D4"}
{"goalName":"swim 5km","details":" I want to swim another 5km","date":"2021-03-14","completed":false,"author":"somename","_id":"EwEicEYZAfFxY9Z6"}
{"goalName":"20 pushups","details":"I want to complete 20 full pushups","date":"2021-05-14","completed":false,"author":"anthername","_id":"rP7q6L8jnwGyAgGD"}
我只对作者姓名的日期感兴趣,
我可以使用以下方法检索这些文档:
getEntriesByUser(userName) {
return new Promise((resolve, reject) => {
this.db.find({ 'author': userName }, function (err, entries) {
if (err) {
reject(err);
} else {
resolve(entries);
console.log('getEntriesByUser returns: ', entries);
}
})
})
}
然后返回用户名 = someusername 的文档,但我只对日期感兴趣。最好将它们存储到一个数组中,结果如下:
[2021-05-15, 2021-03-14, 2021-05-14]
我该怎么做呢?
谢谢你的帮助!
解决方案
您可以使用and方法的可选第二个projection
参数来包含或省略返回记录的属性。请参阅:NeDB#projections。find()
findOne()
db.find({ author: userName }, { date: 1, _id: 0 }, function (err, docs) {...});
const
Datastore = Nedb,
db = new Datastore(),
data = [
{ goalName: "swim 5km", details: "I want to swim 5km", date: "2021-05-15", completed: false, author: "somename" },
{ goalName: "swim 5km", details: " I want to swim another 5km", date: "2021-03-14", completed: false, author: "somename" },
{ goalName: "20 pushups", details: "I want to complete 20 full pushups", date: "2021-05-14", completed: false, author: "anthername" },
];
for (const datum of data) {
db.insert(datum);
}
function getEntriesByUser(userName) {
return new Promise((resolve, reject) => {
db.find({ author: userName }, { date: 1, _id: 0 }, function (err, entries) {
if (err) {
reject(err);
} else {
resolve(entries);
console.log('getEntriesByUser returns: ', entries);
}
})
})
}
getEntriesByUser('somename').then((entries) => {
console.log('Mapped return value: ', entries.map(({ date }) => date));
});
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/nedb/1.8.0/nedb.min.js"></script>
推荐阅读
- firebase - 如何为每个用户创建一个新页面?
- alfresco - 如何在 Alfresco 中获取重复项?
- python - 无法在 google colab 中加载经过训练的模型
- contentful - 在 Contentful In Web App 中配置预览 URL
- regex - 正则表达式从日志中分离 IP:端口
- mysql - Sql Query找出父任务和子任务
- c++ - 在没有 volatile 的 DCL Singleton 中,可以优化 NULL 检查吗?
- amazon-web-services - 如何在托管在 Amazon EC2 实例上的 Tomcat 服务器上从 godaddy 安装 SSL?
- javascript - React Native - 类组件到功能组件(UseEffect:状态未定义)
- android - sensor-hal 内核模块不断重启/重新连接并执行 ramdumps