小编Kin*_*one的帖子

使用expressjs无法将响应流式传输到客户端

在使用Nodejs/Expressjs时,我很难知道如何将数据流回我的客户端.

我从我的数据库中获取了大量数据,并且我正在以块的形式进行操作,我希望将其传回客户端,因为我获取的数据使得我不必将整个数据集作为json对象存储在内存中在发回之前.

我希望数据作为文件流回,即我希望浏览器询问我的用户如何处理下载文件.我以前创建了一个文件系统写入流并将我的数据内容流式传输到文件系统,然后在完成后我将文件发送回客户端.我想消除中间人(在文件系统上创建tmp文件)并将数据流传输到客户端.

app.get(
    '/api/export',
    function (req, res, next) {
        var notDone = true;
        while (notDone) {
            var partialData = // grab partial data from database (maybe first 1000 records);

            // stream this partial data as a string to res???

            if (checkIfDone) notDone = false;
        }
    }
);
Run Code Online (Sandbox Code Playgroud)

我可以调用res.write("一些字符串数据"),然后在完成后调用res.end().但是,我并不是100%确定这实际上是在我写的时候将响应流式传输到客户端.看起来像expressjs存储所有数据,直到我调用end然后发送响应.真的吗?

使用expressjs将字符串数据流传输到响应的正确方法是什么?

streaming node.js express

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

path.join in require 语句

我尝试Path.join在这样的require语句中使用:

import Path from 'path'

const assetPath = Path.join(process.cwd(), `./lib/asset-manifest.json`)

console.log(assetPath)
'/home/dev/Website/lib/asset-manifest.json'

console.log(
  assetPath === '/home/dev/Website/lib/asset-manifest.json'
)
true

const assets = require(assetPath)
Run Code Online (Sandbox Code Playgroud)

但这会引发错误:

Error: Cannot find module '/home/dev/Website/lib/asset-manifest.json'
Run Code Online (Sandbox Code Playgroud)

虽然文件在那里并且require如果我手动将字符串放入其中可以工作:

const assets = require('/home/dev/Website/lib/asset-manifest.json')
Run Code Online (Sandbox Code Playgroud)

所以,我不知道为什么没有Path.join在工作require

此致

javascript dynamic node.js webpack

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

在顶部显示SnackBar(工具栏下方)

我试图在我的SnackBar下面显示一个,ToolBarMainActivity

我试过这段代码:

 mToolbar = (Toolbar) findViewById(R.id.toolbar);
 Snackbar snack = Snackbar.make(findViewById(android.R.id.content), "Had a snack at Snackbar", Snackbar.LENGTH_LONG);
    View view = snack.getView();
    FrameLayout.LayoutParams params =(FrameLayout.LayoutParams)view.getLayoutParams();
    params.gravity = Gravity.TOP;
    view.setLayoutParams(params);
    snack.show();
Run Code Online (Sandbox Code Playgroud)

SnackBar它显示在顶部,但不低于Toolbar.

我想要一些类似于Hangout应用程序的东西:

在此输入图像描述

主要活动:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/Coordinator"
    xmlns:fab="http://schemas.android.com/apk/res-auto"
    tools:context=".MainActivity">

   <LinearLayout
       android:orientation="vertical"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent">

       <android.support.v7.widget.Toolbar

           android:id="@+id/toolbar"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:minHeight="?attr/actionBarSize"
           android:background="?attr/colorPrimary"
           android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

           <ImageView
               android:layout_width="75dp"
               android:layout_height="28dp"
               android:src="@drawable/athena"/>
      </android.support.v7.widget.Toolbar>

      <ProgressBar
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:id="@+id/progressBar5"
           android:layout_marginTop="10dp"
           android:layout_gravity="center_horizontal" />

      <android.support.v4.widget.SwipeRefreshLayout
           android:id="@+id/swipeRefreshLayout"
           android:layout_width="match_parent"
           android:layout_height="match_parent">

           <android.support.v7.widget.RecyclerView
               android:id="@+id/my_recycler_view"
               android:layout_width="match_parent"
               android:layout_height="wrap_content" …
Run Code Online (Sandbox Code Playgroud)

android material-design android-snackbar

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

如何获取span标记的值

如何获取span标记的值并将其发送到我的表单到另一个页面?

<span id="subtotal"></span>
Run Code Online (Sandbox Code Playgroud)

我需要将我的span标签小计的内容发送到另一个页面,我想将它保存到隐藏的字段中,但我发现没办法这样做..

我用过这个,但没有成功!

function getTotal() {
    return alert(document.getElementById('total').innerHTML);
}
Run Code Online (Sandbox Code Playgroud)

对于那些需要答案的人来说,这是正确的功能!在我弄清楚脚本之后......

function getTotal() {
    //document.write(document.getElementById('total').innerHTML);
    var someValue = $(".total").text();
    alert("Value is "+someValue);
    //It cause to releoad the page and give me the parameter total          
    location.href="frmAdd.php?total=" + someValue; 
}
Run Code Online (Sandbox Code Playgroud)

html javascript jquery

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

NgRx @Effect 与 createEffect

createEffectngrx 中的注释与注释有什么区别@Effect

@Injectable()
export class ContactsEffects {

constructor(
    private actions$: Actions,
    private contactsService: ContactsService,
    private contactsSocket: ContactsSocketService
  ) {}


  destroy$ = createEffect( () => this.actions$.pipe(
    ofType(remove),
    pluck('id'),
    switchMap( id => this.contactsService.destroy(id).pipe(
      pluck('id'),
      map(id => removeSuccess({id}))
    ))
  ));

  @Effect()
  liveCreate$ = this.contactsSocket.liveCreated$.pipe(
    map(contact => createSuccess({contact}))
  );

}
Run Code Online (Sandbox Code Playgroud)

javascript decorator typescript ngrx angular

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

使用Material-ui和Radium的多个样式的问题

我正在尝试将Radium和Material-ui结合起来.当我尝试在单个Material-ui组件上应用多个样式时,不应用任何样式.因此,例如,类似这样的东西不会产生样式:

<MenuItem style={[styles.styleOne, styles.styleTwo]} >
Run Code Online (Sandbox Code Playgroud)

当然,如果我这样做:

<MenuItem style={Object.assign({}, styles.styleOne, styles.styleTwo)} >
Run Code Online (Sandbox Code Playgroud)

有用.有没有办法绕过它或者这是使用Radium组合Material-ui组件样式的唯一方法?而且,只需提及,Radium已正确设置,因为在例如DIV元素上应用样式数组或正常工作.此外,我对任何有关使用Material-ui库的React项目样式的建议持开放态度.谢谢!

javascript reactjs material-ui radium

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

ch340中的Android UsbSerial库问题

我正在尝试将开源 python 项目esptool.py转换为 Android(java) 项目。
在 android 中,对于串行通信,我使用的是USB 串行库。
我只需要esp8266功能esptoo.py,所以我只转换了 esp8266 功能。

UsbSerial库,我使用同步 api,因为esptool.py使用同步命令进行串行/
当前项目与 esp8266/FTDI 配合良好,esp8266/cp2102 与esptool.py.
我的问题不是使用esp8266/ch340.
当然,esptool.py 与esp8266/ch340.
但是,我的 android 项目无法使用它。
在android中,esptool.py中使用的主要命令是setDTR, setRTS,serial Readserial Write。尽管处于esp8266/ch340正常模式(不是引导加载程序模式),但每个命令都运行良好。

另外,我确认 esp8266 可以通过 setDTR、setRTS 的组合正确地进入引导加载程序模式。
更正确地确认bootloader模式,我可以使用Flash buttonRST button的esp8266。
在此处输入图片说明 使用 esp8266/ch340,我无法通过 android 项目的第一步。第一步是同步操作。

从android,使用https://github.com/espressif/esptool/wiki/Serial-Protocol#initial-synchronisation调用写入命令,然后esp8266 …

android serial-port

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

Sequelize JSON 字段仅更新一个字段

我有一个像这样的 JSON 字段。{Price:0,Title:'Test'}。我想使用sequelize 将 MYSQL 上的 Price 值更新为 10。我正在使用 MYSQL 8 并支持 JSON 字段。但是在sequelize中想要更改仅价格,sequelize直接写入带有{Price:10}的字段,而其他字段正在删除。我该如何解决这个问题?

(async () => {
  await e_products_v2.update(
    {
      Preferences: {
        Price: 0,
      },
    },
    { where: { id: 1 } }
  );
})();
Run Code Online (Sandbox Code Playgroud)

node.js sequelize.js

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

线上线下同步

由于互联网不稳定,我正在做一个同步在线和离线功能的项目。我想出了一个可能的解决方案。即为在线和离线创建 2 个相似的数据库并同步两者。我的问题是这是一个好方法吗?或者有更好的选择吗?

我已经在网上研究过这个主题,但我没有遇到任何实质性的东西。我发现的一个有用的链接是关于数据库复制。但我希望离线版本能够检测互联网存在并相应地同步。

请你能帮我找到解决方案或线索来解决我的问题吗?

php mysql architecture

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

“必须在 QWidget 之前构造一个 QApplication”

我正在尝试制作一个简单的 Qt 程序。我已经成功地构建并运行了几次程序。当我添加一个 getter 方法将字符串从 MainWindow 传递到对话框QFileDialog::getSaveFileName()时发生了这些错误但是当我在下面的行中注释时,程序会运行成功地。
主窗口.h

class MainWindow : public QMainWindow
{
    Q_OBJECT
    public:
    QString fileName();
};
Run Code Online (Sandbox Code Playgroud)

主窗口文件

QString MainWindow::fileName() {
    return "F:/Users/Admin/Desktop/" + dnldName;
}
Run Code Online (Sandbox Code Playgroud)

文件名()的用法

void Dialog::on_browseButton_clicked()
{
    QFileDialog folder;
    folder.setFileMode(QFileDialog::Directory);
    folder.setOption(QFileDialog::ShowDirsOnly);
    dirPath = folder.getSaveFileName(this, tr("Save File"), mWinObj.fileName(), tr("All Files"));
    ui->savePathEdit->setText(dirPath);
}
Run Code Online (Sandbox Code Playgroud)

该程序成功构建,但在我尝试运行时出现以下错误。

Starting F:\Users\Admin\Desktop\Imp Docs\C++ apps\build-GUINetworkApp-Desktop_Qt_5_2_0_MinGW_32bit-Debug\debug\GUINetworkApp.exe...
QWidget: Must construct a QApplication before a QWidget
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.
F:\Users\Admin\Desktop\Imp Docs\C++ apps\build-GUINetworkApp-Desktop_Qt_5_2_0_MinGW_32bit-Debug\debug\GUINetworkApp.exe exited with …
Run Code Online (Sandbox Code Playgroud)

c++ qt

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