相关疑难解决方法(0)

单线程非阻塞IO模型如何在Node.js中工作

我不是Node程序员,但我对单线程非阻塞IO模型的工作原理感兴趣.在我阅读了文章理解-node-js-event-loop之后,我真的很困惑.它给出了该模型的一个例子:

c.query(
   'SELECT SLEEP(20);',
   function (err, results, fields) {
     if (err) {
       throw err;
     }
     res.writeHead(200, {'Content-Type': 'text/html'});
     res.end('<html><head><title>Hello</title></head><body><h1>Return from async DB query</h1></body></html>');
     c.end();
    }
);
Run Code Online (Sandbox Code Playgroud)

这是一个问题.当有两个请求A(至上)和B,由于只有一个线程,服务器端程序将处理请求的第一:做SQL查询这是一个睡眠声明站立I/O等待.并且程序停留在I/O等待,并且无法执行呈现网页的代码.程序会在等待期间切换到请求B吗?在我看来,由于单线程模型,没有办法从一个请求切换另一个请求.但是示例代码的标题说"除了代码之外,所有内容都是并行运行".(PS我不确定我是否误解了代码,因为我从未使用过Node.)节点如何在等待期间切换到B?你能用一种简单的方法解释Node的单线程非阻塞IO模型吗?如果你能帮助我,我将不胜感激.:)

node.js

323
推荐指数
5
解决办法
10万
查看次数

将本地文件中的json数据加载到React JS中

我有一个React组件,我想从文件中加载我的JSON数据.控制台日志当前不起作用,即使我将变量数据创建为全局变量

'use strict';

var React = require('react/addons');

// load in JSON data from file
var data;

var oReq = new XMLHttpRequest();
oReq.onload = reqListener;
oReq.open("get", "data.json", true);
oReq.send();

function reqListener(e) {
    data = JSON.parse(this.responseText);
}
console.log(data);

var List = React.createClass({
  getInitialState: function() {
    return {data: this.props.data};    
  },
  render: function() {
    var listItems = this.state.data.map(function(item) {
        var eachItem = item.works.work;        

        var photo = eachItem.map(function(url) {
            return (
                <td>{url.urls}</td> 
            )
        });
    });
    return <ul>{listItems}</ul>
  }
});

var redBubble = React.createClass({ …
Run Code Online (Sandbox Code Playgroud)

javascript ajax json xmlhttprequest reactjs

60
推荐指数
6
解决办法
16万
查看次数

用upsert更新:true是不是在express,mongoose中更新?

var logs = [{
    mobilenumber: '1',
    ref: 3,
    points: 1000,
    ctype: 'mycredit',
    entry: 'sdfsdf',
    entry: 0
}, {
    mobilenumber: '1',
    ref: 6,
    points: 2000,
    ctype: 'mycredit',
    entry: 'sdfsdf',
    entry: 0
}, {
    mobilenumber: '2',
    ref: 7,
    points: 2600,
    ctype: 'mycredit',
    entry: 'sdfsdf',
    entry: 0
}, {
    mobilenumber: '2',
    ref: 15,
    points: -1500,
    ctype: 'mycredit',
    entry: 'sdfsdf',
    entry: 0
}, {
    mobilenumber: '10',
    ref: 15,
    points: 800,
    ctype: 'mycredit',
    entry: 'sdfsdf',
    entry: 0
}, {
    mobilenumber: '11',
    ref: 15,
    points: 110, …
Run Code Online (Sandbox Code Playgroud)

javascript mongodb node.js express

7
推荐指数
2
解决办法
1115
查看次数

node.js 从 mysql 查询中获取结果

为什么我得不到结果?

var sql_data = connection.query(sql, function(error, results, fields) {
    if(error) {
        console.log(error);
            return;
    }
    var rows = JSON.parse(JSON.stringify(results[0]));
    console.log(rows);
});
console.log(rows);
Run Code Online (Sandbox Code Playgroud)

第一个 console.log 没问题,显示对象,但第二个说:

参考错误:行未定义

怎么了?..

mysql node.js

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

为什么使用同步函数node.js

每个人都建议在Node.js中使用异步(非阻塞)函数而不是同步函数.

那么如果不推荐使用node.js中的同步函数,那该怎么办?

例如:为什么使用fs.readFileSync()if fs.readFile()可以做同样的工作而不阻塞?

javascript asynchronous node.js

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

fs.exists和fs.existsSync之间的区别

使用节点的文件I/O时,我发现这两个函数(fs.existsfs.existsSync)来检查系统中是否存在文件.它们之间有什么区别?

fs node.js

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

Array.forEach是异步的吗?

根据JavaScript,Node.js:Array.forEach是异步的吗?,Array.forEach是同步的。但是,对于下面的代码:

function wait5() {
    return new Promise(resolve => 
    setTimeout(resolve, 5000));
}

async function main() {
   console.log("Start");
   [1,2].forEach(async (e) => {
      const d = await wait5().then(()=> console.log("5s later") )
   })
   console.log("This should come last!");
}

main();
Run Code Online (Sandbox Code Playgroud)

输出为:

Start
This should come last!
5s later
5s later
Run Code Online (Sandbox Code Playgroud)

两个“ 5s之后”迅速相继问世。

为什么会这样呢?

如果我使用普通for循环:

async function main() {
   console.log("Start");
   for (let i=0;i<2;i++) {
      const d = await wait5().then(()=> console.log("5s later") )
   }
   console.log("This should come last!");
}
Run Code Online (Sandbox Code Playgroud)

那么结果就是我想要的:

Start
5s later …
Run Code Online (Sandbox Code Playgroud)

javascript

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

使用 Mongoose 在 ejs 中显示来自 Mongodb 集合的数据

我是编程的新手。我的本地数据库中有一个名为“Practice”的集合,其中包含“名称、角色、组织”。我想弄清楚如何使用猫鼬在 .ejs 文件中打印此信息。

在我的 server.js 中,我有

require('./app/routes.js')(app, passport);     
mongoose.connect(configDB.url); // connect to our database
    var schema = mongoose.Schema;
    mongoose.model('practice', new schema({ Name: String, Role: String, Org: String}),'practice');
    var practice = mongoose.model('practice');
    practice.find({}, function(err, data) { console.log(err, data); });
Run Code Online (Sandbox Code Playgroud)

在路线中,

app.get('/profileface', isLoggedIn, function(req, res) {
        res.render('profileface.ejs', {
            user : req.user
        });
    });
Run Code Online (Sandbox Code Playgroud)

在视图文件夹中的文件 profileface.ejs 中,我有以下内容可以打印我的“练习”集合中的名称。

<%= practice.name %>
Run Code Online (Sandbox Code Playgroud)

虽然它在控制台中打印,但当我尝试访问 profileface.ejs 时,出现以下错误。

ReferenceError: C:\Users\SEESCHU\Desktop\Linneus university\Assignments\302\Assignment 2\code\Test3\views\profileface.ejs:36 34| </div> 35| >> 36| <%= practice.name %> 37| 38| <!-- <div class="text-center"> 39| <p>Assignment for …
Run Code Online (Sandbox Code Playgroud)

ejs mongoose mongodb node.js

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