设置 Azure DocumentDB Javascript SDK
setting up Azure DocumentDB Javascript SDK
我正在尝试使用 Javascript SDK 设置 Azure DocumentDB。
到目前为止,我有一个主密钥、一个端点 url,以及一个数据库设置和一个集合。我想不通的是如何用他们需要的值代替我所拥有的,我在文档或其他方面找不到任何可以参考的东西。
下面是我试图为其填充值的代码。我的想法是
collectionurl = 我的端点 url,resourceToken = 我的密钥,collectionId = 集合名称。但是什么是 hostedendpoint 以及我应该如何设置 resourceToken?我知道这没什么可继续的,但是如果有人使用过 DocumentDB,我将非常感谢您的帮助。
var host = (hostendpoint); // Add your host
var resourceToken = {};
resourceTokens[(collectionId)] = (resourceToken); // Add the collectionId and resourceToken for read/write on the collection
var collectionUrl = (collectionUrl); // Add the collection self-link
var client = DocumentDB.createClient(host, {resourceTokens: resourceTokens});
var documentDefinition = {id: "Hello world document", content: "Hello World!"};
client.createDocument(collectionUrl, documentDefinition, function(err, createdDocument) {
if (err) {
throw err;
}
console.log('result', createdDocument.content);
})
使上述 JS SDK 代码示例工作的步骤如下:
- 将您的 DocumentDB 端点放入
(hostendpoint)
。
- 放置 collection 资源 ID(这是
_rid
,而不是 id
,
属性 在 collection JSON 文档中)作为值
(collectionId)
.
- 放置权限令牌(您需要创建一个用户并
collection) 的权限作为
(resourceToken)
. 的值
- 在
(collectionUrl)
中为 collection 放置 _self
link
完整的代码示例应该类似于这样:
var host = "https://bloopbloop.documents.azure.com:443"; // Add your host
var resourceTokens = {};
resourceTokens["Pa0wAKPRZQA="] = "type=resource&ver=1&sig=WaOXNCJaZ7Z7obf74i48Yg==;Dbb5bXDnm5ou0rpAUyifsFR5VNIsfSTeuad81P7zC7ytJtSwLCLnw9ne99vuIH8/giBsYIrqtXE5PYDs2idLfdJ4+K3bfT8BJgWqdgIuIEE/nvVpdEQ85y1azPXO7F+wXwBzK4eH2wQ0yMudy+petUdnN1GR3VJNsuNTZ1j+mnLLT/FLpFjWLVyI2dTLe7KHM0FvnczVZmT9wGJV8rUMjgjV9oG552DAev9exPGnj4E=;"; // Add the collectionId and resourceToken for read/write on the collection
var collectionUrl = "dbs/Pa0wAA==/colls/Pa0wAKPRZQA=/"; // Add the collection self-link
var client = DocumentDB.createClient(host, {
resourceTokens: resourceTokens
});
var documentDefinition = {
id: "Hello world document",
content: "Hello World!"
};
client.createDocument(collectionUrl, documentDefinition, function(err, createdDocument) {
if (err) {
throw err;
}
console.log('result', createdDocument);
});
如果您正在构建 Node.js 应用程序 - 我强烈建议您查看 Node.js 客户端:https://github.com/Azure/azure-documentdb-node/
DocumentDB JS 客户端不是使用起来最直观的 SDK。我们正在努力改进围绕此 SDK 的开发体验。如果您愿意讨论您的 use-case/scenario(或什至需要一些一般性帮助)- 请通过 andrl {at} microsoft.com
与我联系!
你应该看看 DoQmentDB 模块。
它是 DocumentDB
之上的包装器,但更直观(mongodb style/flow),支持挂钩、模式、原子事务和 queries/operations.
示例:
// Pass connection and database-name, if `test` is not exist it will create one.
var db = new DoQmentDB(connection, 'test');
// Create a CollectionManager, if `users` is not exist it will create one.
var users = db.use('users');
// Each http function returns a `Promise` with two specific methods: success and error.
users.create({ name: 'Ariel M.' })
.then(console.log);
users.update({ name: 'Ariel', admin: true }, { admin: false })
.then(console.log);
users.findAndRemove({ isAdmin: false })
.then(console.log);
不确定您是否还需要帮助,但是由于aliuy没有过多涉及如何获取资源令牌,所以我想补充一下他的回答。
简单来说,如果您使用Javascript SDK进行"Client Side"开发,您将无法使用SDK生成资源令牌,因为您需要使用master key获取资源令牌,但是客户端JavascriptSDK不支持通过master key[进行认证=25=]。
因此,您将需要使用其他 SDK(例如 Node.js、.NET 等)创建用户,然后使用该用户为特定资源创建权限。
不幸的是,使用这种方法,即使您的应用程序完全是客户端(例如 Metro HTML5/JS 应用程序),您也需要一个中间层来授予对您的应用程序的访问权限。
但是,IF(一个很大的 IF)您的应用程序将主要由您信任主密钥的人使用,您可以通过主密钥添加身份验证到 客户端Javascript SDK 轻松。我不会鼓励人们这样做,所以我不会 post 在这里工作代码,除非你需要它。但这里有一个指针——您将需要一个库来创建签名,例如 Crypto.JS.
我正在尝试使用 Javascript SDK 设置 Azure DocumentDB。 到目前为止,我有一个主密钥、一个端点 url,以及一个数据库设置和一个集合。我想不通的是如何用他们需要的值代替我所拥有的,我在文档或其他方面找不到任何可以参考的东西。
下面是我试图为其填充值的代码。我的想法是 collectionurl = 我的端点 url,resourceToken = 我的密钥,collectionId = 集合名称。但是什么是 hostedendpoint 以及我应该如何设置 resourceToken?我知道这没什么可继续的,但是如果有人使用过 DocumentDB,我将非常感谢您的帮助。
var host = (hostendpoint); // Add your host
var resourceToken = {};
resourceTokens[(collectionId)] = (resourceToken); // Add the collectionId and resourceToken for read/write on the collection
var collectionUrl = (collectionUrl); // Add the collection self-link
var client = DocumentDB.createClient(host, {resourceTokens: resourceTokens});
var documentDefinition = {id: "Hello world document", content: "Hello World!"};
client.createDocument(collectionUrl, documentDefinition, function(err, createdDocument) {
if (err) {
throw err;
}
console.log('result', createdDocument.content);
})
使上述 JS SDK 代码示例工作的步骤如下:
- 将您的 DocumentDB 端点放入
(hostendpoint)
。 - 放置 collection 资源 ID(这是
_rid
,而不是id
, 属性 在 collection JSON 文档中)作为值(collectionId)
. - 放置权限令牌(您需要创建一个用户并
collection) 的权限作为
(resourceToken)
. 的值
- 在
(collectionUrl)
中为 collection 放置
_self
link
完整的代码示例应该类似于这样:
var host = "https://bloopbloop.documents.azure.com:443"; // Add your host
var resourceTokens = {};
resourceTokens["Pa0wAKPRZQA="] = "type=resource&ver=1&sig=WaOXNCJaZ7Z7obf74i48Yg==;Dbb5bXDnm5ou0rpAUyifsFR5VNIsfSTeuad81P7zC7ytJtSwLCLnw9ne99vuIH8/giBsYIrqtXE5PYDs2idLfdJ4+K3bfT8BJgWqdgIuIEE/nvVpdEQ85y1azPXO7F+wXwBzK4eH2wQ0yMudy+petUdnN1GR3VJNsuNTZ1j+mnLLT/FLpFjWLVyI2dTLe7KHM0FvnczVZmT9wGJV8rUMjgjV9oG552DAev9exPGnj4E=;"; // Add the collectionId and resourceToken for read/write on the collection
var collectionUrl = "dbs/Pa0wAA==/colls/Pa0wAKPRZQA=/"; // Add the collection self-link
var client = DocumentDB.createClient(host, {
resourceTokens: resourceTokens
});
var documentDefinition = {
id: "Hello world document",
content: "Hello World!"
};
client.createDocument(collectionUrl, documentDefinition, function(err, createdDocument) {
if (err) {
throw err;
}
console.log('result', createdDocument);
});
如果您正在构建 Node.js 应用程序 - 我强烈建议您查看 Node.js 客户端:https://github.com/Azure/azure-documentdb-node/
DocumentDB JS 客户端不是使用起来最直观的 SDK。我们正在努力改进围绕此 SDK 的开发体验。如果您愿意讨论您的 use-case/scenario(或什至需要一些一般性帮助)- 请通过 andrl {at} microsoft.com
与我联系!
你应该看看 DoQmentDB 模块。
它是 DocumentDB
之上的包装器,但更直观(mongodb style/flow),支持挂钩、模式、原子事务和 queries/operations.
示例:
// Pass connection and database-name, if `test` is not exist it will create one.
var db = new DoQmentDB(connection, 'test');
// Create a CollectionManager, if `users` is not exist it will create one.
var users = db.use('users');
// Each http function returns a `Promise` with two specific methods: success and error.
users.create({ name: 'Ariel M.' })
.then(console.log);
users.update({ name: 'Ariel', admin: true }, { admin: false })
.then(console.log);
users.findAndRemove({ isAdmin: false })
.then(console.log);
不确定您是否还需要帮助,但是由于aliuy没有过多涉及如何获取资源令牌,所以我想补充一下他的回答。
简单来说,如果您使用Javascript SDK进行"Client Side"开发,您将无法使用SDK生成资源令牌,因为您需要使用master key获取资源令牌,但是客户端JavascriptSDK不支持通过master key[进行认证=25=]。
因此,您将需要使用其他 SDK(例如 Node.js、.NET 等)创建用户,然后使用该用户为特定资源创建权限。
不幸的是,使用这种方法,即使您的应用程序完全是客户端(例如 Metro HTML5/JS 应用程序),您也需要一个中间层来授予对您的应用程序的访问权限。
但是,IF(一个很大的 IF)您的应用程序将主要由您信任主密钥的人使用,您可以通过主密钥添加身份验证到 客户端Javascript SDK 轻松。我不会鼓励人们这样做,所以我不会 post 在这里工作代码,除非你需要它。但这里有一个指针——您将需要一个库来创建签名,例如 Crypto.JS.