【问题标题】:Vue + SQLite + Sequelize, storing an imageVue + SQLite + Sequelize,存储一张图片
【发布时间】:2018-12-31 06:24:29
【问题描述】:

我正在根据此处发布的教程创建我的第一个 Vue 项目:https://developer.okta.com/blog/2018/02/15/build-crud-app-vuejs-node

这基本上是一个学习项目。我正在做的是创建一个 rifftrax 数据库——当前定义为标题、正文、亚马逊链接、是否免费(布尔值)、rifftrax 页面的 url 和海报/封面图片。 tutorial 使用 sequelize + sqlite。我查找了 sequelize-file 并安装了它,但我不太确定如何合并这两个概念(即如何完成 okta 设置并将 sequelize-file 模型添加到其中)。所以我正在寻求帮助。

这是我的代码:

import { movieImage } from './models/attachments';

const express = require('express')
const cors = require('cors')
const bodyParser = require('body-parser')
const Sequelize = require('sequelize')
const epilogue = require('epilogue')
const OktaJwtVerifier = require('@okta/jwt-verifier')

const oktaJwtVerifier = new OktaJwtVerifier({
  clientId: '0oafs5gbi8zLaURtu0h7',
  issuer: 'https://dev-943536.oktapreview.com/oauth2/default'
})

let app = express()
app.use(cors())
app.use(bodyParser.json())

// verify JWT token middleware
app.use((req, res, next) => {
  // require every request to have an authorization header
  if (!req.headers.authorization) {
    return next(new Error('Authorization header is required'))
  }
  let parts = req.headers.authorization.trim().split(' ')
  let accessToken = parts.pop()
  oktaJwtVerifier.verifyAccessToken(accessToken)
    .then(jwt => {
      req.user = {
        uid: jwt.claims.uid,
        email: jwt.claims.sub
      }
      next()
    })
    .catch(next) // jwt did not verify!
})

// For ease of this tutorial, we are going to use SQLite to limit dependencies
let database = new Sequelize({
  dialect: 'sqlite',
  storage: './test.sqlite'
})

// Define our Post model
// id, createdAt, and updatedAt are added by sequelize automatically
let Post = database.define('posts', {
  title: Sequelize.STRING,
  body: Sequelize.TEXT,
  amazon: Sequelize.STRING,
  prime: Sequelize.BOOLEAN,
  rifftrax_url: Sequelize.STRING
});

movieImage.addTo(posts)

// Initialize epilogue
epilogue.initialize({
  app: app,
  sequelize: database
})

// Create the dynamic REST resource for our Post model
let userResource = epilogue.resource({
  model: Post,
  endpoints: ['/posts', '/posts/:id']
})

// Resets the database and launches the express app on :8081
database
  .sync({ force: true })
  .then(() => {
    app.listen(8081, () => {
      console.log('listening to port localhost:8081')
    })
  })

【问题讨论】:

    标签: node.js sqlite vue.js sequelize.js


    【解决方案1】:

    根据 sequelize-file 文档,movieImage.addTo(posts) 应该是 movieImage.addTo(Post)

    在 Vue.js 应用程序的前端,每当您执行 Post 端点时,数据负载中都应该包含一个链接。有效负载中链接的键应该是您在 movieImage SequelizeFile 对象中命名的属性。 sequelize-file docs 然后说它会下载链接处的图像并存储它。

    okta 是一个第 3 方服务,用于处理颁发身份验证令牌并验证对服务器的请求是否具有真实令牌。在 Vue.js 教程中解释了如何设置它。 sequelize-file 是一个包,它可以将图像下载到数据库服务器上的某个位置,然后将该文件的路径存储在数据库本身中。 epilogue 是一个包,它创建一个简单的 rest 端点,当它调用数据库上的适当操作时。例如。 'post' 导致基于模型将元素保存到数据库中。 'get' 查询数据库中的元素。

    【讨论】:

    猜你喜欢
    • 2021-09-13
    • 2019-11-15
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    • 2022-01-13
    • 2016-01-06
    • 1970-01-01
    • 2018-02-26
    相关资源
    最近更新 更多