小编ita*_*fna的帖子

如何在同一语句中使用populate和aggregate?

这是我的预约系列:

{ _id: ObjectId("518ee0bc9be1909012000002"), date: ISODate("2013-05-13T22:00:00Z"), patient:ObjectId("518ee0bc9be1909012000002") }

{ _id: ObjectId("518ee0bc9be1909012000002"), date: ISODate("2013-05-13T22:00:00Z"), patient:ObjectId("518ee0bc9be1909012000002") }

{ _id: ObjectId("518ee0bc9be1909012000002"), date: ISODate("2013-05-13T22:00:00Z"), patient:ObjectId("518ee0bc9be1909012000002") }
Run Code Online (Sandbox Code Playgroud)

我使用聚合来获得以下结果

{date: ISODate("2013-05-13T22:00:00Z"),
patients:[ObjectId("518ee0bc9be1909012000002"),ObjectId("518ee0bc9be1909012000002"),ObjectId("518ee0bc9be1909012000002")] }
Run Code Online (Sandbox Code Playgroud)

像这样:

Appointments.aggregate([
{$group: {_id: '$date', patients: {$push: '$patient'}}},
{$project: {date: '$_id', patients: 1, _id: 0}}
], ...)
Run Code Online (Sandbox Code Playgroud)

我怎样才能填写患者文件,但是它不起作用Appointments.find({}).populate("patient").aggregate......

换句话说,我可以在同一个语句中使用populate和aggregate

请帮忙

mongoose mongodb node.js

44
推荐指数
7
解决办法
5万
查看次数

如何使 MJML <mj-text> 元素显示内联块

我是mjml的新手,我试图找出是否有一种方法可以使元素在不使用或内联 css 的<mj-text>情况下显示。inline-block <mj-style>

我有一个<mj-text>呈现动态生成的文本 - 所以我无法预见它的宽度。我希望此容器的背景结束于文本结束的位置,而不是填充整个页面的宽度(就像块元素那样)。

这是我尝试呈现的模板的示例:

<mjml>
  <mj-body>
    <mj-section>
      <mj-column>
        <mj-text align="left" container-background-color="#c3e16d" color="#60b7f1" font-size="14px">
          <span>Dynamically Generated Text</span>
        </mj-text>
      </mj-column>
    </mj-section>
  </mj-body>
</mjml>
Run Code Online (Sandbox Code Playgroud)

经过一番搜索后,我确实设法使用块让它工作<mj-style>- 但我试图弄清楚是否有更合适的方法来使用mjmlapi 来完成它。

html css mjml

7
推荐指数
1
解决办法
1万
查看次数

RxJS Operator 延迟处理后续事件

我正在寻找一个 RxJS 运算符(或运算符组合),它可以让我实现这一目标:

  1. 由可观察对象触发的每个事件都应按其触发顺序进行处理(不得跳过、限制、消除任何值)。
  2. 我应该能够定义处理两个后续事件之间的设定间隔。
  3. 如果当前没有处理先前的事件,则应立即处理下一个事件(无延迟)。

我创建了以下示例,希望能让这一点更清楚:

import { Component, OnInit } from "@angular/core";
import { Subject } from "rxjs";
import { delay } from "rxjs/operators";

@Component({
  selector: "app-root",
  templateUrl: "./app.component.html",
  styleUrls: ["./app.component.css"]
})
export class AppComponent implements OnInit {
  counter = 1;
  displayedValue = 1;

  valueEmitter = new Subject<number>();
  valueEmitted$ = this.valueEmitter.asObservable();

  ngOnInit() {
    // I want to allow each incremented value to be displayed for at least 2 seconds
    this.valueEmitted$.pipe(delay(2000)).subscribe((value) => {
      this.displayedValue = value;
    }); …
Run Code Online (Sandbox Code Playgroud)

javascript observable rxjs typescript angular

7
推荐指数
1
解决办法
1506
查看次数

将React PureComponent重构为基于钩子的功能组件

我有一个基于工作类的Accordion组件的实现,我正在尝试重构以使用新的hooks api

我的主要挑战是找到一种仅重新渲染切换后的方法,<AccordionSection />同时防止<AccordionSection/>每次更新父级的状态<Accordion/>(跟踪其状态中的打开部分)时重新渲染所有其他组件的方法。

在基于类的实现中,我设法实现了这一点,方法是使<AccordionSection />a PureComponent,通过使用API 的高阶组件将isOpenand onClick回调传递给它context以及将这些回调保存在父<Accordion/>组件的状态下,如下所示:

this.state = {
      /.../
      onClick: this.onClick,
      isOpen: this.isOpen
    };
Run Code Online (Sandbox Code Playgroud)

据我所知,它保留了对它们的引用,因此阻止了在每次<Accordion />更新时将它们创建为新实例。

但是,我似乎无法将其与基于钩子的实现一起使用。

我已经尝试不成功的一些事情:

  1. memo- 包裹“手风琴”部分,包括第二个回调参数上的各种渲染条件。

  2. onClick和包装回车isOpenuseCallback(似乎不起作用,因为它们具有在每个<Accordion/>渲染器上更新的依赖项)

  3. onClick和保存isOpen到这样的状态:const [callbacks] = useState({onClick, isOpen})然后将callbacks对象作为传递ContextProvider value。(似乎错了,没用)

这是对基于工作类的实现的引用: …

javascript performance components reactjs react-hooks

6
推荐指数
1
解决办法
208
查看次数

Framer Motion - 过时的自定义值 - 更改自定义值不会触发更新

使用framer-motion,我遇到一个问题,即更新我传递custommotion.div变体的道具的对象不会触发预期的样式更改。

我创建了以下沙箱来演示该问题:

https://codesandbox.io/s/framer-motion-stale-custom-fibp5?file=/src/App.js

我的期望是,当我切换主题时 - 圆圈的开/关颜色将立即根据新主题而改变。(从黑/白到深蓝/黄,反之亦然)。

但是,主题更改仅在动画值更改后才会应用(状态从“打开”更改为“关闭”等),因此当我切换主题时,我会显示“陈旧”主题值,直到我也切换状态(开/关)。

任何帮助将不胜感激。

javascript reactjs framer-motion

5
推荐指数
1
解决办法
2158
查看次数

如何在 d3.js 中制作带有圆角和扩展网格的条形图?

我正在尝试使用 D3.js 创建一个条形图。条件是 Bar 应该具有固定的宽度和条形之间的填充,并且它应该绘制在网格线的中心。

工具提示应该在点击时出现一条垂直线

我能够创建带有绘制条的网格线,不知何故 rx,ry 从两侧四舍五入。我怎样才能达到同样的结果。

var rectCluster = svg.selectAll(".bar")
                    .data(data);

                rectCluster
                    .enter().append("rect")
                    .attr("class", function(d) {
                        return "bar";
                    })
                    .attr(attrs)
                    .attr({ry : (20), rx : 20 })
                    .attr("x", function(d) { return x(d.text); })
                    .attr("y", function(d) {
                        return height;
                    })
                    .style("fill", function(d) {
                        return color(d.text);
                    })
                    .attr("width", x.rangeBand())
                    .attr("height", 0)
                    .transition()
                    .duration(animationDelay)
                    .delay(function(d, i) {
                        return i * animationDelay;
                    })
                    .attr("y", function(d) { return y(d.score); })
                    .attr("height", function(d) { return height - y(d.score) });

                    var attrs = { …
Run Code Online (Sandbox Code Playgroud)

javascript charts d3.js

3
推荐指数
1
解决办法
3890
查看次数

一个 Typescript 接口,允许 2 个可选键之一或没有但不是两个

有没有办法定义一个 Typescript interface,它允许对象中的 2 个可选键之一或没有它们,但不能同时允许两者

这是我试图实现的简化示例:

const example1 = { foo: 'some string' }; //should pass - can have only "foo: string"

const example2 = { bar: 42 }; // should pass - can have only "bar: number"

const example3 = {}; // should pass - both foo and bar are optional

const example4 = { foo: 'some string', bar: 42 }; // should throw a Typescript error - can't have both foo …
Run Code Online (Sandbox Code Playgroud)

typescript

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