Nodejs 将数字连接成一个字符串

Nodejs concatenating numbers as a string

单击按钮时触发此函数

nextPage() {
  this.tweets = []
  this.$route.query.page += 1
  this.getTweets()
},

它所做的是将推文数组重置为零,将现有查询(页面)递增 1 并调用 getTweets 函数

getTweets(newCurrent) {
      this.tweets = []
      const API_URL = `${this.$server}/api/twitter/tweets`

      const params = {
        token: getUserToken(),
        // THIS IS WHERE I AM PASSING QUERY
        page: this.$route.query.page,
        newCurrentPage: newCurrent,
      }
      axios.post(API_URL, null, { params }).then(res => {
        this.currentPage = res.data.page
        this.numberOfPages = res.data.numberOfPages

        res.data.tweets.forEach(tweet => {
          const tweetData = {
            id: tweet.id,
            tweet_text: tweet.tweet_text,
            twitter_name: tweet.twitter_name,
            twitter_username: tweet.twitter_username,
            added_at: moment(String(tweet.added_at)).format('MM/DD/YYYY hh:mm'),
          }
          this.tweets.push(tweetData)
        })
      })
    }

最后在 nodejs 中。在这里我得到 typeof number 但 currentPage 仍然连接,如果我在第 20 页并单击下一步,currentPage 将为 201。如何避免这种情况?

    var currentPage = parseInt(req.query.page)
    console.log(typeof currentPage)
    console.log(currentPage)
    
    // check if there is newCurrentPage
    if(newCurrentPage != undefined) {
        skip = (newCurrentPage - 1) * pageSize
        currentPage = newCurrentPage
    } else {
        // check if page is valid
        if(currentPage < 1) {
            currentPage = 1
        } else if(currentPage > numberOfPages) {
            currentPage = numberOfPages - 1
        }
        
        // offset
        skip = (currentPage - 1) * pageSize
    }

vue-router 中的查询参数始终被视为 string。因为它可能是 page=1 就像它可能是 page=foo,所以没有办法知道。

所以 ?page=1 将是 this.$route.query.page === "1"

要解决此问题,您必须先解析参数:

const newPage = parseInt(this.$route.query.page, 10) + 1

旁注,将新值分配给 $router.query.page 不起作用。您必须推送一条新路线才能更新:

const newPage = parseInt(this.$route.query.page, 10) + 1
this.$router.push({ query: newPage })