0

我正在尝试按用户的组织 ID 过滤 MongoDB 中的图表。过滤器适用于字符串和数字,但当我尝试使用 ObjectID 过滤时它不起作用。

这没有返回任何结果,可能是因为“组织”是一个 ObjectID;

const filter = { 'organization': user.organization }

这给了我一个错误(加载此图表的数据时出错(错误代码:-1)。未知错误。);

const filter = { 'organization': {'$toObjectId': user.organization} }

这个字符串过滤器有效,但不是我需要的;

const filter = { 'organization_name': 'test' }

这个字符串过滤器有效,但不是我需要的;

const MongoChart = props => {
  const { baseUrl, chartId, height, filter, getToken } = props;
  const classes = useStyles();
  const chartRef = React.createRef();
  const sdk = new ChartsEmbedSDK({
    baseUrl: baseUrl,
    autoRefresh: true,
    showAttribution : false,
    maxDataAge: 100,
    getUserToken: async () => {
      const token = await getToken();
      return  token;
    }
  });
  const chart = sdk.createChart({
    chartId: chartId,
    height: height,
    filter: filter
  });
  useEffect(() => {
    chart.render(chartRef.current)
  })
  return (
    <div className={classes.root}>
        <div className={classes.chart} ref={chartRef} />
    </div>
  );
}

export default MongoChart;

有没有办法在前端将字符串转换为 Mongoose ObjectID?

4

1 回答 1

1

刚刚意识到语法错误。

我将 '$toObjectId' 切换为 '$oid' 并且它有效。

const filter = { 'organization': {'$oid': user.organization} }
于 2021-05-07T09:42:58.893 回答