Как написать агрегацию MongoDB в Котлин / JS - PullRequest
0 голосов
/ 15 марта 2019

Я пытаюсь использовать Kotlin JS с MongoDB Browser SDK.SDK допускает функцию в JavaScript, например:

const someData = db("database")
        .collection("stories")
        .aggregate(
                [
                    {
                        $lookup:
                            { from: "person",
                              localField: "person_id",
                              foreignField: "_id",
                              as: "people"
                            }
                    }
                ]
        )

Вот как я конвертирую ее в Kotlin:

val aggregate = mapOf(
        "\$lookup" to mapOf(
                "from" to "people",
                "localField" to "people_id",
                "foreignField" to "_id",
                "as" to "people"
        )
)
val someData = mongodb
    .db("database")
    .collection("stories")
    .aggregate(aggregate)

Но я получаю следующую ошибку: Uncaught RangeError: Maximum call stack size exceeded

Есть идеи?

1 Ответ

0 голосов
/ 29 мая 2019

Kotlin / JS mapOf несовместим с простыми объектами значения ключа JavaScript. Вместо этого используйте функцию json .

import kotlin.js.json

val aggregate = arrayOf(
    json(
        "\$lookup" to json(
            "from" to "people",
            "localField" to "people_id",
            "foreignField" to "_id",
            "as" to "people"
        )
    )
)
...