MongoDB 数据 Api 不起作用。它返回 400 Bad request

问题描述 投票:0回答:2

我正在尝试使用 Data Api 将文档插入 MongoDB。我已经尝试这样做两天了,但一无所获。它一直告诉我 400 Bad request.

当我发出帖子请求来查找文档列表时,它起作用了。但是当我想要deleteOne、updateOne、findOne、insertOne 和 insertMany 时,我收到 400 Bad request。

我已授予我的 Api 密钥读写权限。我不知道该怎么办。

这就是我调用该函数的方式:

  await MongoDB.insertData(collection: 'PostedJobs', document: {   
    //All other fields are strings besides the ones I commented on   
              "nick_name": "",
              "image_url": '',
              "username": myUserName,
              "title": title,
              'searchCriteria': list, // list string
              "description": description,
              'category': category, // this is map of <string,string>
              "pushToken": "",
              "time": DateTime.now().toIso8601String(),
              "from": "posted",
              "location": location,
              "city": city.replaceAll("State", "").trim(),
              "country": countryName,
              "area": area,
              'latlng': null,
              'budget': !hasBudget ? 0 : int.tryParse(budget!), 
              'seen': [],
            }).then((_) {
              EasyLoading.dismiss();
              Get.back();
            });

这就是功能:

static insertData({
    required String collection,
    required document,
  }) async {
    await http
        .post(
            Uri.parse(
                'https://data.mongodb-api.com/app/myappid/endpoint/data/v1/action/insertOne'),
            headers: {
              'Content-Type': "application/json",
              'api-key': APIKEY,
            },
            body: json.encode({
              "dataSource": "MyCluster",
              "database": "Database",
              "collection": collection, //PostedJobs
              "document": document, //The document parameter I passed
            }))
        .then((value) {
      if (value.statusCode == 200)
        print('ok');
      else {
        print(value.request);
        throw ErrorDescription(value.reasonPhrase!);
      }
    }, onError: (c, v) {
      print(c);
      print(v);
    });
  }

另外:我在Firebase云函数和MongoDB触发函数(Typescript)中使用了上述函数,没问题,但在dart本身中我似乎找不到问题。请我需要一双额外的眼睛。

以下是 MongoDB 的示例:

curl --request POST \
  'https://data.mongodb-api.com/app/<Data API App ID>/endpoint/data/v1/action/insertOne' \
  --header 'Content-Type: application/json' \
  --header 'api-key: <Data API Key>' \
  --data-raw '{
      "dataSource": "Cluster0",
      "database": "todo",
      "collection": "tasks",
      "document": {
        "status": "open",
        "text": "Do the dishes"
      }
  }'
mongodb flutter dart
2个回答
0
投票

在塞利姆多安的帮助下。我已经能够继续前进了。我必须去基本客户端来解决我的问题。这是链接:

flutter:Content-type 必须是 application/json


0
投票

从 2024 年 9 月开始收到此错误的任何人都应该注意,MongoDB 数据 API 已被弃用。您需要找到其他解决方案。

更多详细信息请参见:https://www.mongodb.com/docs/atlas/app-services/data-api/data-api-deprecation/#std-label-data-api-deprecation

© www.soinside.com 2019 - 2024. All rights reserved.