草庐IT

azure - golang COSMOS DB,快速入门,缺少环境变量 AZURE_DATABASE

coder 2024-07-09 原文

更新:

  1. 初始化函数中使用的 GetEnvVarOrExit 已弃用。 (但可能仍然有效)

2。 (这有效)快速的解决方案是以这种方式简单地编辑 init() 函数......

func init() {
  // database = utils.GetEnvVarOrExit("AZURE_DATABASE")
  // password = utils.GetEnvVarOrExit("AZURE_DATABASE_PASSWORD")
  database = "testDBForStart"
  password = "lTy8axgO6O49JaR2GetYourOwnPasswordFromPortala7yNucQ=="
}

  1. 第三个选项是设置环境 Var,这是指令调用要做的。但是上面的第 2 项有效。我没有使用这个选项。

对我有用的解决方案是将上面的 Init() 函数更改为对 Azure/Cosmos 凭据进行硬编码。


原始问题

我正在尝试为 GoLang 和 CosmosDB 编写 MS Azure 快速入门。 我有一个 CosmosDB 设置并确认

  • 启用聚合管道
  • 启用 MongoDB 3.4 有线协议(protocol)(第 5 版)
  • 启用每个文档的 TTL

我关注的文章是: https://learn.microsoft.com/en-us/azure/cosmos-db/create-mongodb-golang

但是,我收到了这个错误:

Missing environment variable AZURE_DATABASE

在 Azure/CosmosDB 控制面板 > 连接字符串

HOST: testDBForStart.documents.azure.com

因此 DB 应该是 vytest02?

USERNAME: testDBForStart

PRIMARY PASSWORD: lTy8axgOveryfakePasswordpa7yNr8lZ1GoC5RoMucQ==

#代码

package main

import (
    "crypto/tls"
    "fmt"
    "log"
    "net"
    "os"
    "time"

    "github.com/Azure/go-autorest/autorest/utils"
    "gopkg.in/mgo.v2"
    "gopkg.in/mgo.v2/bson"
)

var (
    database string
    password string
)

func init() {
    database = utils.GetEnvVarOrExit("AZURE_DATABASE")
    password = utils.GetEnvVarOrExit("AZURE_DATABASE_PASSWORD")
}

// Package represents a document in the collection
type Package struct {
    Id            bson.ObjectId `bson:"_id,omitempty"`
    FullName      string
    Description   string
    StarsCount    int
    ForksCount    int
    LastUpdatedBy string
}

func main() {
    // DialInfo holds options for establishing a session with Azure Cosmos DB for MongoDB API account.
        dialInfo := &mgo.DialInfo{
    Addrs:    []string{fmt.Sprintf("%s.documents.azure.com:10255", database)}, // Get HOST + PORT
    Timeout:  60 * time.Second,
    Database: database, // It can be anything
    Username: database, // Username
    Password: password, // PASSWORD
    DialServer: func(addr *mgo.ServerAddr) (net.Conn, error) {
        return tls.Dial("tcp", addr.String(), &tls.Config{})
    },

    // Create a session which maintains a pool of socket connections
    session, err := mgo.DialWithInfo(dialInfo)

    if err != nil {
        fmt.Printf("Can't connect, go error %v\n", err)
        os.Exit(1)
    }

    defer session.Close()

    // SetSafe changes the session safety mode.
    // If the safe parameter is nil, the session is put in unsafe mode, and writes become fire-and-forget,
    // without error checking. The unsafe mode is faster since operations won't hold on waiting for a confirmation.
    // http://godoc.org/labix.org/v2/mgo#Session.SetMode.
    session.SetSafe(&mgo.Safe{})

    // get collection
    collection := session.DB(database).C("package")

    // insert Document in collection
    err = collection.Insert(&Package{
        FullName:      "react",
        Description:   "A framework for building native apps with React.",
        ForksCount:    11392,
        StarsCount:    48794,
        LastUpdatedBy: "shergin",
    })

    if err != nil {
        log.Fatal("Problem inserting data: ", err)
        return
    }

    // Get Document from collection
    result := Package{}
    err = collection.Find(bson.M{"fullname": "react"}).One(&result)
    if err != nil {
        log.Fatal("Error finding record: ", err)
        return
    }

    fmt.Println("Description:", result.Description)

    // update document
    updateQuery := bson.M{"_id": result.Id}
    change := bson.M{"$set": bson.M{"fullname": "react-native"}}
    err = collection.Update(updateQuery, change)
    if err != nil {
        log.Fatal("Error updating record: ", err)
        return
    }

    // delete document
    err = collection.Remove(updateQuery)
    if err != nil {
        log.Fatal("Error deleting record: ", err)
        return
    }
}

最佳答案

请参阅上面的更新。非常简单的解决方案,工作优雅。

关于azure - golang COSMOS DB,快速入门,缺少环境变量 AZURE_DATABASE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54788718/

有关azure - golang COSMOS DB,快速入门,缺少环境变量 AZURE_DATABASE的更多相关文章

  1. ruby-on-rails - 如何使用 instance_variable_set 正确设置实例变量? - 2

    我正在查看instance_variable_set的文档并看到给出的示例代码是这样做的:obj.instance_variable_set(:@instnc_var,"valuefortheinstancevariable")然后允许您在类的任何实例方法中以@instnc_var的形式访问该变量。我想知道为什么在@instnc_var之前需要一个冒号:。冒号有什么作用? 最佳答案 我的第一直觉是告诉你不要使用instance_variable_set除非你真的知道你用它做什么。它本质上是一种元编程工具或绕过实例变量可见性的黑客攻击

  2. ruby - 通过 ruby​​ 进程共享变量 - 2

    我正在编写一个gem,我必须在其中fork两个启动两个webrick服务器的进程。我想通过基类的类方法启动这个服务器,因为应该只有这两个服务器在运行,而不是多个。在运行时,我想调用这两个服务器上的一些方法来更改变量。我的问题是,我无法通过基类的类方法访问fork的实例变量。此外,我不能在我的基类中使用线程,因为在幕后我正在使用另一个不是线程安全的库。所以我必须将每个服务器派生到它自己的进程。我用类变量试过了,比如@@server。但是当我试图通过基类访问这个变量时,它是nil。我读到在Ruby中不可能在分支之间共享类变量,对吗?那么,还有其他解决办法吗?我考虑过使用单例,但我不确定这是

  3. ruby-on-rails - 如何在我的 Rails 应用程序 View 中打印 ruby​​ 变量的内容? - 2

    我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby​​中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R

  4. ruby-on-rails - 使用 ruby​​ 将多个实例变量转换为散列的更好方法? - 2

    我收到格式为的回复#我需要将其转换为哈希值(针对活跃商家)。目前我正在遍历变量并执行此操作:response.instance_variables.eachdo|r|my_hash.merge!(r.to_s.delete("@").intern=>response.instance_eval(r.to_s.delete("@")))end这有效,它将生成{:first="charlie",:last=>"kelly"},但它似乎有点hacky和不稳定。有更好的方法吗?编辑:我刚刚意识到我可以使用instance_variable_get作为该等式的第二部分,但这仍然是主要问题。

  5. ruby-on-rails - Ruby on Rails 可以部署在 Azure 网站上吗? - 2

    我可以在Azure网站上部署RubyonRails吗? 最佳答案 还没有。目前仅支持.NET和PHP。 关于ruby-on-rails-RubyonRails可以部署在Azure网站上吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/12964010/

  6. ruby - Rack:如何将 URL 存储为变量? - 2

    我正在编写一个简单的静态Rack应用程序。查看下面的config.ru代码:useRack::Static,:urls=>["/elements","/img","/pages","/users","/css","/js"],:root=>"archive"map'/'dorunProc.new{|env|[200,{'Content-Type'=>'text/html','Cache-Control'=>'public,max-age=6400'},File.open('archive/splash.html',File::RDONLY)]}endmap'/pages/search.

  7. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  8. 微信小程序开发入门与实战(Behaviors使用) - 2

    @作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors    1、什么是behaviors    2、behaviors的工作方式    3、创建behavior    4、导入并使用behavior    5、behavior中所有可用的节点    6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors    1、什么是behaviorsbehaviors是小程序中,用于实现

  9. 【Java入门】使用Java实现文件夹的遍历 - 2

    遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg

  10. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

随机推荐