节点js - 程序的整体结构

时间:2017-03-02 18:27:41

标签: node.js

希望你很好。

我需要你的帮助才能理解如何在Node JS中逻辑组织程序,以避免在给定异步属性的情况下重复代码(作为初学者......)。让我们举一个例子,让它更容易解释。 一个人在mongo数据库中有一些数据(让我们说一个名字列表)。这个名称列表可以通过readData函数访问,如下所示

function readData(criteriaRead,callback) {
    mongodb.stuff(..)
    callback('data read on mongodb')
}

我的程序中有两个动作:一个是打印出名称列表,另一个是检查名称是否在列表中。 对于第一种情况,它很简单,我只需要有这样的功能

function printout(data) {console.log(data)}

并且要做到这一点

readData(criteriaRead,printout)

在第二种情况下,让我们说我有这样的功能

checkIfInIt(array,dataToCheck) {//stuff to check console.log(results)}

现在,我有一个问题,因为如果我做readData(criteriaRead,checkIfInIt)它就不会工作,因为checkIfInIt需要两个参数。 我需要一个像这样的函数

function readDataBis(criteriaRead,dataToCheck,callback) {
    mongodb.stuff(..)
    callback('data read on Mongodb','dataToCheck')
}

然后readDataBis(criteriaRead,dataToCheck,checkIfInIt)会起作用,但我的代码中有很多重复。

如何避免?

1 个答案:

答案 0 :(得分:0)

针对此类问题有几种解决方案,但这对您的案例来说很简单

使用三个参数声明你的函数

function readData(callback, criteriaRead, dataToCheck) { ...

在内部,检查dataToCheck是否为undefined,并继续执行您所拥有的第二个功能的流程(如果是这样的话)。 (否则只需执行读取功能)

像这样打电话给他们

readData(callback, criteriaRead); // Third parameter missing, will be undefined
readData(callback, criteriaRead, dataToCheck);

你也可以传递一个像这样的参数的对象,如果它会使它更简单

function readData(callback, params) { ...

并像这样打电话

readData(callback, { criteriaRead: criteriaRead, dataToCheck: dataToCheck });