Giter Site home page Giter Site logo

alvin0216 / react-blog Goto Github PK

View Code? Open in Web Editor NEW
728.0 12.0 194.0 5.98 MB

react hooks + koa2 + sequelize + mysql 构建的个人博客。具备评论、通知、上传文章等等功能

License: MIT License

JavaScript 78.87% HTML 6.06% CSS 6.25% Less 8.81%
react koa2 mysql sequelize react-router-v4 redux jwt bycrypt create-react-app react-hooks

react-blog's People

Contributors

alvin0216 avatar crazylxr avatar dependabot[bot] avatar edwardwang0302 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

react-blog's Issues

hljs is not defined

最近在报错 hljs is not defined 能处理这个问题吗?
好像是CDN失效了

这个是什么原因呢?

http://127.0.0.1:6060/article/list

{
stack: "SequelizeDatabaseError: Unknown column 'tags.articleId' in 'on clause' at Query.formatError (F:\github\react-blog\server\node_modules\sequelize\lib\dialects\mysql\query.js:244:16) at Query.handler [as onResult] (F:\github\react-blog\server\node_modules\sequelize\lib\dialects\mysql\query.js:51:23) at Query.execute (F:\github\react-blog\server\node_modules\mysql2\lib\commands\command.js:30:14) at Connection.handlePacket (F:\github\react-blog\server\node_modules\mysql2\lib\connection.js:408:32) at PacketParser.Connection.packetParser.p [as onPacket] (F:\github\react-blog\server\node_modules\mysql2\lib\connection.js:70:12) at PacketParser.executeStart (F:\github\react-blog\server\node_modules\mysql2\lib\packet_parser.js:75:16) at Socket.Connection.stream.on.data (F:\github\react-blog\server\node_modules\mysql2\lib\connection.js:77:25) at emitOne (events.js:115:13) at Socket.emit (events.js:210:7) at addChunk (_stream_readable.js:266:12) at readableAddChunk (_stream_readable.js:253:11) at Socket.Readable.push (_stream_readable.js:211:10) at TCP.onread (net.js:587:20) From previous event: at Query.run (F:\github\react-blog\server\node_modules\sequelize\lib\dialects\mysql\query.js:39:12) at runHooks.then.then (F:\github\react-blog\server\node_modules\sequelize\lib\sequelize.js:645:29) From previous event: at Promise.try.then.connection (F:\github\react-blog\server\node_modules\sequelize\lib\sequelize.js:645:12) From previous event: at Promise.resolve.retry (F:\github\react-blog\server\node_modules\sequelize\lib\sequelize.js:641:10) at F:\github\react-blog\server\node_modules\retry-as-promised\index.js:70:21 at Promise () at retryAsPromised (F:\github\react-blog\server\node_modules\retry-as-promised\index.js:60:10) at Promise.try (F:\github\react-blog\server\node_modules\sequelize\lib\sequelize.js:631:30) From previous event: at Sequelize.query (F:\github\react-blog\server\node_modules\sequelize\lib\sequelize.js:580:23) at QueryInterface.rawSelect (F:\github\react-blog\server\node_modules\sequelize\lib\query-interface.js:1163:27) at Function.aggregate (F:\github\react-blog\server\node_modules\sequelize\lib\model.js:1993:32) at Promise.try.then (F:\github\react-blog\server\node_modules\sequelize\lib\model.js:2045:19) at runCallback (timers.js:781:20) at tryOnImmediate (timers.js:743:5) at processImmediate [as _immediateCallback] (timers.js:714:5) From previous event: at Function.count (F:\github\react-blog\server\node_modules\sequelize\lib\model.js:2029:8) at Function.findAndCountAll (F:\github\react-blog\server\node_modules\sequelize\lib\model.js:2097:12) at getList (F:\github\react-blog\server\controllers\article.js:129:39) at dispatch (F:\github\react-blog\server\node_modules\koa-compose\index.js:44:32) at next (F:\github\react-blog\server\node_modules\koa-compose\index.js:45:18) at F:\github\react-blog\server\node_modules\koa-router\lib\router.js:346:16 at dispatch (F:\github\react-blog\server\node_modules\koa-compose\index.js:44:32) at F:\github\react-blog\server\node_modules\koa-compose\index.js:36:12 at dispatch (F:\github\react-blog\server\node_modules\koa-router\lib\router.js:351:31) at dispatch (F:\github\react-blog\server\node_modules\koa\node_modules\koa-compose\index.js:42:32) at logger (F:\github\react-blog\server\node_modules\koa-logger\index.js:67:13) at dispatch (F:\github\react-blog\server\node_modules\koa\node_modules\koa-compose\index.js:42:32) at module.exports (F:\github\react-blog\server\middlewares\authHandler.js:56:11) at dispatch (F:\github\react-blog\server\node_modules\koa\node_modules\koa-compose\index.js:42:32) at jsonError (F:\github\react-blog\server\node_modules\koa-json-error\lib\middleware.js:49:12) at dispatch (F:\github\react-blog\server\node_modules\koa\node_modules\koa-compose\index.js:42:32) at F:\github\react-blog\server\node_modules\koa-body\index.js:148:14 at at process._tickCallback (internal/process/next_tick.js:188:7)",
name: "SequelizeDatabaseError",
parent: {
code: "ER_BAD_FIELD_ERROR",
errno: 1054,
sqlState: "42S22",
sqlMessage: "Unknown column 'tags.articleId' in 'on clause'",
sql: "SELECT count(DISTINCT(article.id)) AS count FROM article AS article LEFT OUTER JOIN tag AS tags ON article.id = tags.articleId LEFT OUTER JOIN category AS categories ON article.id = categories.articleId LEFT OUTER JOIN comment AS comments ON article.id = comments.articleId LEFT OUTER JOIN reply AS comments->replies ON comments.id = comments->replies.commentId WHERE article.id != -1 AND (article.title LIKE '%%' OR article.content LIKE '%%');"
},
original: {
code: "ER_BAD_FIELD_ERROR",
errno: 1054,
sqlState: "42S22",
sqlMessage: "Unknown column 'tags.articleId' in 'on clause'",
sql: "SELECT count(DISTINCT(article.id)) AS count FROM article AS article LEFT OUTER JOIN tag AS tags ON article.id = tags.articleId LEFT OUTER JOIN category AS categories ON article.id = categories.articleId LEFT OUTER JOIN comment AS comments ON article.id = comments.articleId LEFT OUTER JOIN reply AS comments->replies ON comments.id = comments->replies.commentId WHERE article.id != -1 AND (article.title LIKE '%%' OR article.content LIKE '%%');"
},
sql: "SELECT count(DISTINCT(article.id)) AS count FROM article AS article LEFT OUTER JOIN tag AS tags ON article.id = tags.articleId LEFT OUTER JOIN category AS categories ON article.id = categories.articleId LEFT OUTER JOIN comment AS comments ON article.id = comments.articleId LEFT OUTER JOIN reply AS comments->replies ON comments.id = comments->replies.commentId WHERE article.id != -1 AND (article.title LIKE '%%' OR article.content LIKE '%%');",
message: "Unknown column 'tags.articleId' in 'on clause'",
status: 500
}

请问如何通过Tag模糊查询获取所有包含该标签的文章列表

例如: 用户按标签查询,输入关键字 Javascript 获取如下结果


[
  {
    createdAt: "2020-01-14 15:51:24",
    updatedAt: "2020-04-13 14:35:55",
    id: 87,
    title: " React Hooks 笔记",
    content: "content值",
    viewCount: 66,
    tags: [{name: "Javascript", name: "react"}],
    categories: [{name: "Javascript"}],
    comments: []
  },
  {
    createdAt: "2020-01-14 15:51:24",
    updatedAt: "2020-04-13 14:35:55",
    id: 88,
    title: " React Hooks 笔记1",
    content: "content值",
    viewCount: 66,
    tags: [{name: "Javascript", name: "vue"}],
    categories: [{name: "Javascript"}],
    comments: []
  }
]
const { tag_name } = ctx.query
.....
const data = await ArticleModel.findAndCountAll({
   这个查询sql 该怎么写
})

useMount

请问,这个useMount自定义的hook的用处是什么,我水平不够,不知道有什么意义
`
import { useEffect } from 'react'

export default function useMount(func) {
useEffect(() => {
typeof func === 'function' && func()
}, [])
}
`

源码解读不解的地方

/**

  • 获取 elements 的最后一个 index (用于决定 this.props.children 的渲染)
  • @param {Boolean} dynamic - 是否为动态表单
  • @param {Array} elements
    */
    function getLastIndex(dynamic = false, elements) {
    if (!dynamic) return elements.length - 1
    const els = elements.filter(v => !!v)
    return els.length - 1
    }

请问在dynamic == true时filter有何意义?

大佬可以讲一下思路吗?

研究源码,感觉就是不知从何处下手。大佬可以简单讲一下后台项目的思路吗?比如先写哪个模块,后写哪个模块。谢谢!

打扰一下

你好 非常开心看到你的开源项目。我们团队最近在做一个和信息平台相关的项目(目前在北京和北美注册的公司)。我们正好缺具有react开发经验的小伙伴(可以通过多种方式加入,未必全职),如果你感兴趣加入我们,想进一步了解我们的团队。可以添加我的微信 SJHBXS

svg文件使用

大佬,能解答下,项目中svg文件的引入步骤吗,在配置中没有找到呢

怎么部署到服务器

打包后无法访问文章管理页面啊,刷新页面404,还有你这后台怎么部署?能说一下吗?新手

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.