作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用官方 mongodb-go-driver 从 Go Web 服务器中的 MongoDB map 集获取我的数据。我正在使用 json.Marshal 转换为 json。但某些字段的所有值都变为零。
package main
import (
"context"
"fmt"
"log"
"github.com/gin-gonic/gin"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"go.mongodb.org/mongo-driver/mongo/readpref"
)
var c = GetClient()
type PlantData struct {
Minute int `json:"minute"`
Date int `json:"date"`
Moisture1 int `json:"moisture_1"`
Hour int `json:"hour"`
Month int `json:"month"`
Year int `json:"year"`
Humidity1 float64 `json:"humidity_1"`
Temperature1 float64 `json:"temperature_1"`
}
func GetClient() *mongo.Client {
clientOptions := options.Client().ApplyURI("MY_MONGODB_URI")
client, err := mongo.NewClient(clientOptions)
if err != nil {
log.Fatal(err)
}
err = client.Connect(context.Background())
if err != nil {
log.Fatal(err)
}
return client
}
func ReturnAllPlantsData(client *mongo.Client, filter bson.M) []*PlantData {
var plantsdata []*PlantData
collection := client.Database("iot").Collection("tomatos")
cur, err := collection.Find(context.TODO(), filter)
if err != nil {
log.Fatal("Error on Finding all the documents", err)
}
for cur.Next(context.TODO()) {
var plantdata PlantData
err = cur.Decode(&plantdata)
if err != nil {
log.Fatal("Error on Decoding the document", err)
}
plantsdata = append(plantsdata, &plantdata)
}
return plantsdata
}
func getting(g *gin.Context) {
plantsdatas := ReturnAllPlantsData(c, bson.M{})
ans, _ := json.Marshal(plantsdatas)
fmt.Println(string(ans))
c.String(200, string(ans))
}
func main() {
err := c.Ping(context.Background(), readpref.Primary())
if err != nil {
log.Fatal("Couldn't connect to the database", err)
} else {
log.Println("Connected!")
}
router := gin.Default()
router.GET("/data", getting)
router.Run()
}
[{
"minute": 3,
"date": 14,
"moisture_1": 96,
"hour": 23,
"month": "02",
"year": 2019,
"humidity_1": 77.2,
"temperature_1": 22.7
}, {
"minute": 8,
"date": 14,
"moisture_1": 96,
"hour": 23,
"month": "02",
"year": 2019,
"humidity_1": 78.1,
"temperature_1": 22.8
}]
[{
"minute": 3,
"date": 14,
"moisture_1": 0,
"hour": 23,
"month": "02",
"year": 2019,
"humidity_1": 0,
"temperature_1": 0
}, {
"minute": 8,
"date": 14,
"moisture_1": 0,
"hour": 23,
"month": "02",
"year": 2019,
"humidity_1": 0,
"temperature_1": 0
}]
最佳答案
您必须使用 bson
从/到 MongoDB 编码时的标签。 json
标签适用于 encoding/json
包,并且 Mongo 驱动程序不会使用(忽略)它们。
type PlantData struct {
Minute int `bson:"minute"`
Date int `bson:"date"`
Moisture1 int `bson:"moisture_1"`
Hour int `bson:"hour"`
Month int `bson:"month"`
Year int `bson:"year"`
Humidity1 float64 `bson:"humidity_1"`
Temperature1 float64 `bson:"temperature_1"`
}
bson
结构字段中缺少标签,MongoDB 中使用的默认名称将以小写字母开头的结构字段名称,这就是为什么某些(大多数)字段匹配但不匹配
Moisture1
(它不仅仅不同于
moisture_1
的大写首字母)。
encoding/json
使用此结构打包,您可以同时提供:
type PlantData struct {
Minute int `bson:"minute" json:"minute"`
Date int `bson:"date" json:"date"`
Moisture1 int `bson:"moisture_1" json:"moisture_1"`
Hour int `bson:"hour" json:"hour"`
Month int `bson:"month" json:"month"`
Year int `bson:"year" json:"year"`
Humidity1 float64 `bson:"humidity_1" json:"humidity_1"`
Temperature1 float64 `bson:"temperature_1" json:"temperature_1"`
}
关于json - 为什么我从 mongodb 的 json 中的某些字段的值全为零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59017731/
我创建了一个缓冲区,然后在其上创建了一个 Uint8Array,但该数组没有任何值。我希望它具有缓冲区的值。这是一个易于重现的示例: var buf = new ArrayBuffer(32); fo
我正在尝试使用 1D 纹理将整数数组传递到片段着色器中。尽管代码编译并运行,但当我查看着色器中的纹理值时,它们都是零! 这是我在学习了一些教程后得到的 C++ 代码: GLuint texture;
我在 git 中有一个尚未提交的分支,SHA1 0000000000000000000000000000000000000000(全为零),这是正常的还是我损坏了 git 存储库? 请不要回答"is"
我最近提出了一个问题,涉及我在让 MIT Kerberos 与 Microsoft 的 LSA 凭据缓存良好配合时遇到的一些问题。 有人告诉我,设置注册表项 AllowTGTSessionKey 应该
我是一名优秀的程序员,十分优秀!