如何解决Datastax Astra netlify 和 react-app,我应该使用 nodejs 客户端还是 REST API 来实现无服务器功能?
我使用“create-react-app”构建了一个简单的 React 应用程序,并且我想在 netlify 中使用无服务器功能。 为此,我使用 DataStax Astra Cassandra DB,并在我的 react 项目中创建了 netlify.toml 配置和 .env 变量(用于数据库)。
我为 netlify 设置了一个无服务器函数文件夹:
const { createClient } = require('@astrajs/collections')
// create an Astra client
exports.handler = async function (event,context) {
try {
const astraClient = await createClient({
astraDatabaseId: process.env.ASTRA_DB_ID,astraDatabaseRegion: process.env.ASTRA_DB_REGION,applicationToken: process.env.ASTRA_DB_APPLICATION_TOKEN,})
// const basePath = `/api/rest/v2/KEYSPACES/${process.env.ASTRA_DB_KEYSPACE}/collections/messages`
const messagesCollection = astraClient
.namespace(process.env.ASTRA_DB_KEYSPACE)
.collection('messages')
const message = await messagesCollection.create('msg1',{
text: 'hello my name is Marc!',})
return {
statusCode: 200,body: JSON.stringify(message),}
} catch (e) {
console.error(e)
return {
statusCode: 500,body: JSON.stringify(e),}
}
它在我运行 netlify dev
时起作用,然后我的 .env 变量被注入到 .js 文件中。
但是,我想知道我是否应该在这里使用 nodejs datastax
集合,或者来自 datastax (https://docs.datastax.com/en/astra/docs/astra-collection-client.html) 的 REST API
函数?因为有了 react,它本质上是不是在浏览器中运行?我想知道为什么这仍然适用于 nodejs(因为它不是带有 react 的 nodejs 环境,或者是吗?)
我可以通过 localhost:8888/.netlify/functions/functionName
访问我的函数,这是由 nodejs 服务器提供的还是浏览器提供的?
解决方法
它在我运行 netlify dev 时工作,然后我的 .env 变量被注入到 .js 文件中。但是,我想知道我是否应该在这里使用 nodejs datastax 集合,或者来自 datastax (https://docs.datastax.com/en/astra/docs/astra-collection-client.html) 的 REST API 函数?因为有了 React,它本质上是在浏览器中运行还是不运行?
正确 - 如果您直接从 React 应用程序连接到数据库,则会向全世界公开您的 Astra 凭据。
我想知道为什么这仍然适用于 nodejs(因为它不是带有 react 的 nodejs 环境,或者是吗?)我可以通过 localhost:8888/.netlify/functions/functionName 访问我的函数,这是从nodejs 服务器还是浏览器的东西?
Netlify 函数在服务器端运行,因此在您的函数代码中连接到 Astra 是安全的。下面是一个例子:https://github.com/DataStax-Examples/todo-astra-jamstack-netlify/blob/master/functions/createTodo.js
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。