javascript - 为什么功能流程不正常?

标签 javascript node.js express sails.js waterline

我正在开发一个 nodeJS 应用程序,我无法像我定义的那样在正常流程中调用函数。

console.log('1') 
require('../models/userModel')(UserCtrl);// inside this file i have console.log('2')
console.log('3') 

但我得到 1个 3个 2个 而不是 1 2个 3个 这是我的 userModel 代码

var Waterline   = require('waterline'),
      config    = require('../config/db'),
       _        = require('lodash')
        orm     = new Waterline()

module.exports = function(refContObj){
    var User = Waterline.Collection.extend({

      identity: 'user',
      connection: 'myLocalDBConn',

      attributes: {
        first_name: 'string',
        last_name: 'string'
      }
    });

    orm.loadCollection(User);
    orm.initialize(config,function(err, models){
        refContObj.models = models.collections;

        console.log('2') 
    });
}

谢谢

最佳答案

orm 对象的初始化方法是异步的。这意味着控制权将交给异步方法后面的代码,即 console.log('3') 语句,当初始化方法完成时,将调用包含 console.log('2') 的回调。

require('../models/userModel')(UserCtrl, main);

function main() {
  console.log('3'); 
}

userModel代码应该是:

var Waterline   = require('waterline'),
      config    = require('../config/db'),
       _        = require('lodash')
        orm     = new Waterline()

module.exports = function(refContObj, cb){
    var User = Waterline.Collection.extend({

      identity: 'user',
      connection: 'myLocalDBConn',

      attributes: {
        first_name: 'string',
        last_name: 'string'
      }
    });

    orm.loadCollection(User);
    orm.initialize(config,function(err, models){
        refContObj.models = models.collections;

        console.log('2');
        cb();

    });
}

关于javascript - 为什么功能流程不正常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28294444/

相关文章:

javascript - 如何确定数据表中的行是否可见

javascript - mongoose.connect undefined 不是函数

javascript - MongoDB update() 函数如何同时具有参数和回调函数?

javascript - React + Express + Nodemailer : Can't render components and Nodemailer together

node.js - 使用 Node.js 和 Express for Action on Google 进行同步调用?

node.js - Connect-flash 消息不适用于 res.render ("SomeView")

javascript - 如何在文档就绪时模拟单击事件?

javascript - 在Safari/Chrome中,如何在ready()和focus()上触发函数A,在blur()上触发函数B?

javascript - 未定义 Photoswipe UI 默认值

mysql - 将一对多连接响应转换为 Node js中的对象