📅  最后修改于: 2020-11-23 01:32:44             🧑  作者: Mango
MongoDB提供了一个无服务器平台,可在不设置服务器基础结构的情况下快速构建应用程序。 MongoDB Stitch被设计为MongoDB Atlas的升级版本。它会自动将连接集成到我们的数据库。 Stitch阐明了开发和实施过程。它通过忽略构建和部署后端的需求来实现这一目标。 MongoDB缝线作为后端服务提供,使我们能够轻松配置数据身份验证,数据访问规则和服务。
MongoDB针脚提供了可升级的基础结构设计来处理请求。它还协调服务和数据库交互。也就是说,我们不需要在配置服务器等任务上花费时间和资源。
例如,我们可以使用MongoDB Stitch生成管道,该管道将允许我们通过HTTP服务使用Stripe接受付款,更新购买日期以及使用Mailgun服务发送确认电子邮件。
步骤1:转到https://www.mongodb.com/cloud/atlas页面,然后登录到您的Atlas帐户。
步骤2:现在,您必须创建一个要与MongoDB Stitch应用程序一起使用的集群,请按照以下步骤操作:
步骤3:在MongoDB地图集内,从左侧导航窗口中单击Stitch Apps。
步骤4:在那之后,点击Create New Application按钮。
步骤5:在“创建新应用程序”弹出窗口上,为您的Stitch应用程序输入名称。
步骤6:从Link to Cluster下拉对话框中选择项目中的集群。 MongoDB Stitch会自动创建链接到您的集群的MongoDB服务。
步骤7:在“针迹服务名称”字段中填写针迹将创建的服务的名称。
步骤8:为您的应用程序选择部署模型和部署区域。然后单击创建按钮。
成功部署后,将出现以下窗口。
步骤1:首先,为您的应用程序创建一个新目录,并在目录的根目录下添加一个itchle.json文件。该文件必须包含一个空的JSON对象。
步骤2:使用API密钥通过Atlas对MongoDB Stitch应用程序进行身份验证。
stitch-cli login --api-key=my-api-key --private-api-key=my-private-api-key
步骤3:现在,使用“ stitch-cli import”命令导入Stitch CLI库。
步骤4:您应该验证是否创建了应用程序。
使用MongoDB查询语言,我们可以直接从客户端应用程序代码查询在MongoDB中存储的数据。用于MongoDB集合的Stitch服务器使我们能够根据登录的用户或每个文档的内容,使用指定的数据访问规则安全地过滤结果。
Student集合包含示例拼贴中描述每个学生的文档。每个文档都包含学生的姓名,电子邮件,地址,费用以及学生信息流中的信息。在下面给出的示例中,我们将比较学生收集的所有文档,然后将格式化结果作为表格返回。
HTML档案:
Name
Email
Class
Batch
Fees
Java脚本文件:
const {
Stitch,
RemoteMongoClient,
UserPasswordCredential
} = stitch;
const stitchClient = Stitch.initializeDefaultAppClient("stitch-quickstarts-zhpox");
login("javatpoint@example.com", "password123").then(() => {
// Initialize a MongoDB Service Client
const mongodb = stitchClient.getServiceClient( RemoteMongoClient.factory,
"mongodb-atlas");
// Get a hook to the student collection
const students = mongodb.db("Admin").collection("students");
return students.find({}, {
// limit: 2,
// sort: { "fees": -1 }
})
.asArray();
})
.then(displayStudents)
function login(email, password) {
const credential = new UserPasswordCredential(email, password);
return stitchClient.auth.loginWithCredential(credential);
}
// Renders the the students' information in the table
function displayStudents(students) {
const employeesTableBody = document.getElementById("students");
const numResultsEl = document.getElementById("num-results");
const tableRows = students.map(student => {
return '
${student.name.last}, ${student.name.first}
${student.email}
${student.role}
${student.manager.name.first}${student.manager.name.last} (${student.admin.id || "no manager"})
${student.fees}
';
});
studentTableBody.innerHTML = tableRows.join("");
numResultsEl.innerHTML = student.length;
}
用规则保护数据
如果我们不想让每个学生看到其他每个学生的数据,则可以使用收集规则。我们可以使用它来控制所有用户都可以访问的数据,而无需更改查询的模式。
在这里,我们正在使用Stitch创建博客和评论系统。我们正在使用MongoDB Stitch JavaScript SDK和MongoDB服务直接从客户端代码添加和查询注释。
博客应用程序的体系结构
博客应用程序体系结构需要以下功能:
当我们使用MongoDB Atlas Cluster时,我们可以存储评论和身份验证详细信息,允许用户使用临时帐户发布评论。
博客架构的三个主要组成部分是:
博客应用程序体系结构的前端处理显示和用户交互。 Stitch管理来自前端的所有请求,并仅允许将经过验证的请求发送到数据库,从而为我们的用户保存评论。
博客应用程序的后端用于存储评论和其他详细信息,例如-验证和授权用户,查找博客帖子的现有评论等。我们将评论存储在MongoDB应用程序示例中。在这里,我们将限制用户创建,编辑和删除仅与他们的用户ID相关联的注释的权限。我们还需要确保一个用户不能以其他用户身份登录;我们可以使用MongoDB针脚中的内置用户管理系统来实现。
要求:
步骤1:按照上述指示创建针迹应用程序。
步骤2:在您创建的Stitch应用程序中打开“匿名身份验证”。
步骤3:最后,配置blog.comments MongoDB集合
步骤4:启用对评论的读写。
第5步:最后,通过在Stitch GUI顶部的弹出窗口中单击Review&Deploy Changes来发布应用程序。
步骤1:创建HTML页面,如下所示。
This is the first blog post of JavaTpoint
Learn technology from javaTpoint to keep yourself industry ready.
步骤2:现在,附加以下JavaScript SDK。附加MongoDB Stitch SDK。将下面给出的脚本标记添加到html文件的头部。
步骤3:初始化应用程序客户端和MongoDB Service客户端,以将评论存储在MongoDB中。用您的Stitch替换应用ID
步骤4:现在,添加下面给出的脚本以在页面加载时查询并显示注释。
function displayComments() {
db.collection("comments")
.find({}, {limit: 1000})
.toArray()
.then(docs => {
const html = docs.map(doc => '${doc.comment}');
document.getElementById("comments").innerHTML = html;
});
}
步骤5:您必须创建一个文件,允许用户在加载期间登录并显示评论。
function displayCommentsOnLoad() {
client.auth
.loginWithCredential(new stitch.AnonymousCredential())
.then(displayComments)
.catch(console.error);
}
步骤6:现在,创建一个表单以提交评论。
function addComment() {
const newComment = document.getElementById("new_comment");
console.log("add comment", client.auth.user.id)
db.collection("firstcomment")
.insertOne({ owner_id : client.auth.user.id, comment: newComment.value })
.then(displayComments);
newComment.value = "";
}