我可以使用Nuxt.js渲染数据库中的数据吗?

时间:2019-06-18 15:13:51

标签: node.js vue.js sequelize.js axios nuxt.js

我正在学习nuxt.js,因此我决定用它创建一个小项目。我读了一些文档。我有些不明白。

如果 Nuxt 可以使用多个后端框架(express,hapi,koa等),我可以使用 sequelize 之类的东西来创建一个完整的应用程序吗?

例如,我使用 express sequelize 访问数据库。然后使用 nuxt asyncData 将其呈现到我的组件中,而无需使用 axios 进行获取。可能吗?需要一些有关此的信息

2 个答案:

答案 0 :(得分:0)

Nuxt.js是后端不可知的-意味着您可以使用任何后端技术来驱动Nuxt.js(或Vue.js)应用程序。您可以使用express和sequelize创建后端。您不能直接从nuxt访问数据库,需要创建将在asyncdata中提供数据的接口。

<script>
import Customers from '~/plugins/Customers.js'
export default{
  asyncData ({ params }) {
    return Customers.getCustomers()
    .then(result => { customers: result.users})
  } 
}
</script>

在下面的示例中,getCustomers()返回一个Promise,其中包含用户。 在Customers.js中,创建一个将访问数据库的接口。希望这能给您一个实现的思路,始终建议您抽象化前端和后端,以便将来如果您希望更改后端堆栈,则可以轻松进行更新,也可以向快递服务器发出API请求在您的asyndata中会很好。

答案 1 :(得分:0)

您不能直接从 AttributeError Traceback (most recent call last) <ipython-input-34-04ae8dbf024e> in <module>() 15 plt.imshow(new_array, cmap = plt.cm.binary) 16 plt.show() ---> 17 user_test = user_test.reshape(-1,img_size,img_size) 18 user_test = tf.keras.utils.normalize(new_array, axis = 1) 19 predicted = model.predict([[user_test]]) AttributeError: 'str' object has no attribute 'reshape' 调用数据库,因为这在浏览器中运行时不起作用。

您在网站上访问的第一个页面将被服务器渲染,因此理论上您可以从您的 Vue 代码发出数据库请求。但是所有后续页面都在浏览器中呈现(包括运行 asyncData),因此将不再起作用。

也许它适用于仅在构建过程中运行 asyncData 的完全静态站点。当我尝试它时,我在让数据库访问代码与 Webpack 构建完美配合时遇到问题,我放弃了。