Я не хочу использовать структуры перед преобразованием результатов в JSON. Допустим, у меня есть некоторые результаты:
result, err := collection.Find(ctx, filter, options)
Я могу собрать все результаты в переменной docs , а последний результат - в переменной doc :
var doc bson.Raw
var docs []bson.Raw
for result.Next(ctx) {
document, err := result.DecodeBytes()
if err != nil {
log.Println(err)
}
doc = document
docs = append(docs, doc)
}
Я могу легко преобразовать последний результат в JSON без использования каких-либо структур:
var jsonDoc bson.M
err = bson.Unmarshal(doc, &jsonDoc)
return jsonDoc
Я не могу преобразовать документы в JSON и использовать их на моем сервере отдыха.
Обновление 2019-01-17:
Я использую результат на моем REST-сервере так:
user.GET("/booking/customer/:id", func(c *gin.Context) {
result := GetAllCustomerBookings(c.Param("id"))
c.JSON(http.StatusOK, result)
})
, так что это не может быть циклическим изменением значений.
Вопрос: как преобразовать [] bson.Raw в [] байт или bson.Raw.
Давайте представим, что теперь у меня есть {JSON} в каждом значении массива. Мне нужен один JSON, например: [{JSON}, {JSON}, ...].
Использовать nodejs было проще, потому что я мог отправлять все записи в одном документе JSON. Go и mongodb-go-driver должны пройти через все записи, и я не знаю, как создать один документ JSON.
Nodejs и mongodb эквивалент:
router.get('/bookings/customer/:id', function (req, res, next) {
db.Bookings.find({
"booking.customer._id": {
$eq: req.params.id
}
}).sort({
"booking.arrival_date": -1
},
function (err, bookings) {
if (err) {
res.send(err);
} else {
res.json(bookings);
}
});
});