Javascript 如何仅将NeDB数据库中的某些字段存储到带有NodeJS的数组中

Javascript 如何仅将NeDB数据库中的某些字段存储到带有NodeJS的数组中,javascript,node.js,express,nedb,Javascript,Node.js,Express,Nedb,我有一个内嵌的NeDB数据库,其中有许多带有多个字段的条目,我希望只从每个条目中获取日期,并将其存储到一个数组中。我正在使用NeDB、NodeJS和express 数据集如下所示: {"goalName":"swim 5km","details":"I want to swim 5km","date":"2021-05-15","completed":fal

我有一个内嵌的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);
      }
    })
  })
}
然后返回username=someusername的文档,但我只对日期感兴趣。优选地,将它们存储到具有如下结果的阵列:

[2021-05-15221-03-1412021-05-14]

我该怎么做呢


谢谢你的帮助

您可以使用
find()
findOne()
方法的可选第二个
projection
参数来包括或忽略返回记录的属性。请参阅:

const
数据存储=Nedb,
db=新数据存储(),
数据=[
{目标名称:“游泳5公里”,细节:“我想游泳5公里”,日期:“2021-05-15”,完成:假,作者:“somename”},
{目标名称:“游泳5公里”,细节:“我想再游5公里”,日期:“2021-03-14”,完成:假,作者:“somename”},
{目标名称:“20个俯卧撑”,详细信息:“我想完成20个完整的俯卧撑”,日期:“2021-05-14”,完成:假,作者:“另一个姓名”},
];
用于(数据的常量数据){
db.插入(基准);
}
函数getEntriesByUser(用户名){
返回新承诺((解决、拒绝)=>{
db.find({author:userName},{date:1,_id:0},函数(err,entries){
如果(错误){
拒绝(错误);
}否则{
解决(条目);
log('getEntriesByUser returns:',entries);
}
})
})
}
getEntriesByUser('somename')。然后((条目)=>{
log('Mapped return value:',entries.map({date}=>date));
});
。作为控制台包装{最大高度:100%!重要;顶部:0;}

您可以使用
find()
findOne()
方法的可选第二个
投影
参数来包括或忽略返回记录的属性。请参阅:

const
数据存储=Nedb,
db=新数据存储(),
数据=[
{目标名称:“游泳5公里”,细节:“我想游泳5公里”,日期:“2021-05-15”,完成:假,作者:“somename”},
{目标名称:“游泳5公里”,细节:“我想再游5公里”,日期:“2021-03-14”,完成:假,作者:“somename”},
{目标名称:“20个俯卧撑”,详细信息:“我想完成20个完整的俯卧撑”,日期:“2021-05-14”,完成:假,作者:“另一个姓名”},
];
用于(数据的常量数据){
db.插入(基准);
}
函数getEntriesByUser(用户名){
返回新承诺((解决、拒绝)=>{
db.find({author:userName},{date:1,_id:0},函数(err,entries){
如果(错误){
拒绝(错误);
}否则{
解决(条目);
log('getEntriesByUser returns:',entries);
}
})
})
}
getEntriesByUser('somename')。然后((条目)=>{
log('Mapped return value:',entries.map({date}=>date));
});
。作为控制台包装{最大高度:100%!重要;顶部:0;}
db.find({ author: userName }, { date: 1, _id: 0 }, function (err, docs) {...});