小编Ole*_*nko的帖子

如何创建选择器以从ngrx商店中按ID选择项目

我阅读了ngrx商店关于选择器的文档,并且需要弄清楚如何创建选择器以便按项目ID选择一个项目.当我从selectAllItems选择器中获取所有项目时,我已经可以将此作为商店订阅的一部分,但我需要弄清楚如何从商店中的项目列表中选择特定项目.我的主要原因是createSelector提供了我喜欢的性能提升.

这是我的代码:

import { AppState, Item } from '../../shared/models/index';
import { createSelector } from '@ngrx/store';

export const selectItems = (state: AppState) => state.eventsState;

export const selectAllItems = createSelector(selectItems, (allItems: { items: Item[] }) => {
  if (allItems && allItems.items) {
   return allItems.items.filter((item: Item) => (!item.active && !item.closed));
  } else {
    return allItems.items;
  }
});
Run Code Online (Sandbox Code Playgroud)

然后在我的控制器中我按ID过滤以获得所需的项目:

this.store.select(selectors.selectAllItems)
  .filter(data => data !== null)
  .subscribe(allItems => {
    this.item = allItems.filter(item => {
      return item.id === this.navParams.data.id;
    }); …
Run Code Online (Sandbox Code Playgroud)

typescript ngrx ngrx-store

11
推荐指数
2
解决办法
9378
查看次数

从现在到两个小时前创建的 MongoDB 查询文档

我的节点中有一个 mongodb 查询,它根据几个条件查找文档:

Follow.find({
    user: req.user._id
    , followed: req.params.userId
}).populate(populateQuery).exec(function (err, results) {
    next.ifError(err);
    //res.send(results);
    if(results.length > 0){
        console.log('****** found!!!');
        console.log(results);
    }
});
Run Code Online (Sandbox Code Playgroud)

所以这很好用。但是,我需要找到仅在现在和两个小时前创建的记录。如何正确格式化查询对象中的日期对象?

{
    user: req.user._id
    , followed: req.params.userId
    ,dateCreated: {
        $gte: ISODate(<TWO HOURS AGO>),
        $lt: ISODate(<NOW>)
    }
}
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb

2
推荐指数
1
解决办法
406
查看次数

标签 统计

mongodb ×1

mongoose ×1

ngrx ×1

ngrx-store ×1

typescript ×1