小编Nas*_*tro的帖子

如何在 Android 应用程序中隐藏 API 密钥?

在我的应用程序中,我使用谷歌地图 api 密钥与谷歌通信。我在 gradle 调试/发布配置中定义了这个 MAP_KEY,如下所示:

debug {
            buildConfigField 'String', 'BASE_URL', '"https://myweb.com"'
            buildConfigField 'String', 'SOCKET_URL', '"https://socket.myweb.com"'
            buildConfigField 'String', 'MAP_KEY', '"azaS****Ds"'
        }
Run Code Online (Sandbox Code Playgroud)

但是如果有人从谷歌游戏商店下载我的应用程序并反编译它,他将获得我的 API 令牌。这是真的?如果是,在我的代码中隐藏 api 密钥的方法是什么?

android environment-variables api-key

9
推荐指数
1
解决办法
1万
查看次数

启动我的 node.js 应用程序时出现错误 connect ECONNREFUSED 127.0.0.1:3306

当我启动 node.js 应用程序时,出现此错误:

SequelizeConnectionRefusedError: connect ECONNREFUSED 127.0.0.1:3306
Run Code Online (Sandbox Code Playgroud)

我在做什么:

 - create a user:
CREATE USER 'main'@'localhost' IDENTIFIED BY 'myPass';

 - give this user all privileges
GRANT ALL PRIVILEGES ON *.* TO 'main'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

然后我尝试通过我的生产代码进行连接,它给了我一个错误:connect ECONNREFUSED 127.0.0.1:3306。

但是在我的本地主机环境中,它连接良好。当我尝试在 VPS 上使用命令行连接到数据库时,它也可以工作: mysql -umain -p

我无法与代码连接。但是在我的本地主机上它连接。仔细检查了我的登录信息,并在 .env 中传递给 DB 用户。

javascript mysql node.js sequelize.js

7
推荐指数
1
解决办法
1万
查看次数

如何使用React-Intl呈现格式化消息列表

我有一个navigation标准项目,例如:联系方式,服务,价格等...我将其呈现为:

const menuItemList = menuItems.map((item, index) => {
    return (
        <li key={index}>
            <NavLink to={item.url}>{item.title}</NavLink>
        </li>
    );
});
Run Code Online (Sandbox Code Playgroud)

工作正常。但是现在我需要翻译此导航,并react-intl为此使用库。因此,对于react-intl 文档,我必须这样使用FormattedMessage

<p>
   <FormattedMessage id="mainText"/>
</p> 
Run Code Online (Sandbox Code Playgroud)

有用。但是如何将其用于列表呈现?我认为这可以解决此问题,但事实并非如此。

const menuItemsList = menuItems.map((item, index) => {
    return (
        <li key={index}>
            <NavLink to={item.url}>
                <FormattedMessage id="mainText" values={item.title}/>
            </NavLink>
        </li>
    );
});
Run Code Online (Sandbox Code Playgroud)

伙计们,请帮忙。如何React使用FormattedMessagefrom中的项目渲染列表react-intl

javascript reactjs react-intl

5
推荐指数
1
解决办法
594
查看次数

为什么Spread()方法在Sequelize中不起作用?

我正在Sequelize为我的node.js应用程序使用。我使用findOrCreate()方法创建一个新用户(如果不存在)。根据docs, findOrCreate返回一个数组,其中包含找到或创建的对象,以及一个布尔值,如果创建了新对象,则为true,否则为false。

sequelize建议使用spread()将数组分为2部分并将其作为参数传递给回调函数的方法。第一部分是用户对象,第二部分是布尔值(如果添加了新行)。

我的工作async/await风格。我的代码是:

app.post('/signup', async (req, res) => {
        try {
            let insertedUser = await User.findOrCreate({
                where: { email: req.body.userEmail },
                defaults: {
                    pass: req.body.userPass
                }
            })
            insertedUser.spread((user, created) => {
                if(created) {
                    res.json(user.email)
                }
            })
        } catch (err) {
            console.log(`ERROR! => ${err.name}: ${err.message}`)
            res.status(500).send(err.message)
        }
    }
})
Run Code Online (Sandbox Code Playgroud)

发布请求后,我得到一个错误:

ERROR! => TypeError: insertedUser.spread is not a function
Run Code Online (Sandbox Code Playgroud)

为什么会这样,医生说它必须是一个函数?

javascript node.js sequelize.js

5
推荐指数
1
解决办法
1228
查看次数

如何在 Express 中向 req.url 添加查询字符串?

我想req.url在 Express 中向 a 添加一个字符串。字符串如下所示:

?id=someID&product=bag
Run Code Online (Sandbox Code Playgroud)

我无权访问客户端 html 或服务器。我从客户那里得到的只是一个GET没有任何参数的请求。所以我尝试制作中间件,它会添加查询字符串,然后我会像往常一样解析它。这个想法是:

// Middleware

const addQuery = (req, res, next) => {
    req.url = req.url + `?id=someID&product=bag`;
    next();
}
Run Code Online (Sandbox Code Playgroud)

然后在请求处理程序中:

router.get('/', addQuery, (req, res) => {
    console.log(req.query.id);
    console.log(req.query.product);
});
Run Code Online (Sandbox Code Playgroud)

但它给了我undefined。我不能使用任何客户端js,也不能使用服务器端编码。不是我origin向我发送这个请求。

那么如何添加查询字符串来表达请求然后成功解析呢?

javascript node.js express

4
推荐指数
1
解决办法
4678
查看次数

如何使用React渲染不同的布局?

我想显示导航栏只为这个网址:/contact/services。而且我不想显示的Navbar /signin。目前,这是我所拥有的:

import React, { Component } from 'react';
import { BrowserRouter, Route, Switch } from 'react-router-dom';

import PublicLayout from './components/layouts/PublicLayout';
import SigninLayout from './components/layouts/SigninLayout';

import Main from './components/pages/Main';
import Services from './components/pages/Services';
import Contact from './components/pages/Contact';

class App extends Component {
    render() {
        return (
            <BrowserRouter>
                <div className="App">
                  <Switch>                    
                    <PublicLayout>
                            <Route exact path='/' component={Main} />
                            <Route exact path='/services' component={Services} />
                            <Route exact path='/contact' component={Contact} />
                    </PublicLayout>
                    <SigninLayout>
                            <Route exact path='/signin' component={Signin} />
                    </SigninLayout>
                  </Switch> …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-router

3
推荐指数
1
解决办法
2709
查看次数

如何以 async/await 风格制作回调函数?

目前我正在使用jwtnode.js 应用程序。我使用如下所示的jwt.sign()方法:

jwt.sign({
            accountID: user.accountID,
            email: user.email,

        }, process.env.SECRET_KEY, (err, token) => {

            if (err) throw err
            res.json({token})
        })
Run Code Online (Sandbox Code Playgroud)

我不想使用回调。我想将其转换为async/await. 据我所知,我必须new Promiseresole({})和返回reject(err)。但我不知道如何使用 sign() 方法中的 promise。任何帮助表示赞赏。谢谢!

javascript async-await es6-promise

3
推荐指数
1
解决办法
3737
查看次数

如何在 sequelize findAll() 中获取简单数组?

我正在尝试async/await使用sequelize. 我的代码看起来像:

更新:

router.get('/', errorHandler(async (req, res, next) => {

    let domainsDB = await Domain.findAll({
            where: { accID: accID },
            attributes: [`adID`, `domain`, `status`]
    })

}
Run Code Online (Sandbox Code Playgroud)

console.log(domainsDB)我看到这个:

[ 
     domains {
       dataValues: [Object],
       _previousDataValues: [Object],
       _changed: {},
       _modelOptions: [Object],
       _options: [Object],
       __eagerlyLoadedAssociations: [],
       isNewRecord: false },
     domains {
...
...
...
]
Run Code Online (Sandbox Code Playgroud)

文件说,它是在返回数组。但是控制台日志显示这是一个对象。这个对象中的数据dataValues是正确的。有我的域。但我希望得到一个可以使用的数组。

如何获得一个数组作为回报async/await?谢谢你的帮助。

javascript async-await sequelize.js

3
推荐指数
1
解决办法
7364
查看次数

如何在 Hover 上制作 React 动画?

我需要像本中那样移动菜单项下划线。

使用 jQuery,我只需获取菜单项的左侧位置和宽度即可。然后stop.animation悬停执行。

我正在尝试用 制作这样的动画React。但我不知道该怎么做。经过谷歌研究后,我发现了流行的动画反应运动库。但我找不到如何在悬停时触发动画的方法。

我的任务是在悬停时移动蓝色下划线div。请帮助我找到解决方案。在此输入图像描述

javascript animation reactjs react-motion

2
推荐指数
1
解决办法
2万
查看次数

如何在React中使用Google Analytics(分析)?

在我的react应用程序中,我有一些页面:

  1. 主要
  2. 服务
  3. 联系
  4. 个人资料(私人)
  5. 等等..

我需要跟踪用户使用Google Analytics(分析)的活动。我用google搜索了react-ga,一切都很好。但是,有了这个库,我必须在使用的每条路线上初始化我的GA。例如:

路线“ /”-主页:

class Main extends Component {

    componentDidMount() {
        initGA();
    }

    render() {
        return (
            <div>
                <Component1 />
                <Component2 />
            </div>
        )
    }
}
Run Code Online (Sandbox Code Playgroud)

我的initGA()样子是:

import ReactGA from 'react-ga';

export const initGA = () => {
    ReactGA.initialize('UA-00000000-1');
    ReactGA.pageview(window.location.pathname + window.location.search);
    console.log(window.location.pathname + window.location.search);
}
Run Code Online (Sandbox Code Playgroud)

我的App class样子是:

class App extends Component {
    render() {
        return (
            <BrowserRouter>
                <div className="App">

                    <Switch>
                        <Route exact path="/" component={Main} /> …
Run Code Online (Sandbox Code Playgroud)

javascript google-analytics reactjs react-ga

2
推荐指数
3
解决办法
5043
查看次数

为什么 async/await 函数运行两次?

我正在使用expressnode.js应用程序。我有一个普通路由器,它:

  • 发现,myIDDB
  • 如果myID存在它会尝试addVisit()
  • 如果发生错误(可能这样的表不存在),它会捕获错误,创建新表并添加addVisit()到该表中。

路由器代码如下:

    router.get('/:myId', errorHandler(async (req, res, next) => {

    console.log(req.params.myId + ' This is myID Params!');

    const Domain = DomainModel(db, Sequelize);
    const Click = ClickModel(db, `${req.params.myId}_clicks`, Sequelize);

    try {
        let row = await Domain.findOne({ where: { myId: req.params.myId } });

        console.log(row.myId + ' This is myID from DB');

        if (row.myId) {
            try {
                await addVisit(Click, req);
                res.sendStatus(200);
            } catch (err) {
                console.log(`This error fires!`);
                if …
Run Code Online (Sandbox Code Playgroud)

javascript node.js express async-await sequelize.js

1
推荐指数
1
解决办法
2156
查看次数