2015-10-16 55 views
0

我正在测试mongodb数据库使用猫鼬与我在JavaScript文件中定义的查询方法,我想运行一些查询使用这种方法通过调用它们终端(其中一些,带参数)使用节点js。我没有创建任何服务器,尽管我熟悉使用邮递员创建路线和进行查询,并且我已经编写了测试以确认方法正在按预期工作,但我想通过终端运行查询,因为我正在为了学习目的而这样做只要。我怎样才能调用方法定义在一个JavaScript文件从终端参数

如果有人可以建议一个节点包,它可以读取javascript文件并使其中定义的方法/函数可以从终端调用,那么我将很高兴。我也愿意以任何其他方式实现这一目标。

我试图在网上搜索一个合适的npm软件包,但我一直没有幸运,我对MEAN堆栈很陌生并且仍在学习,底线是我想在终端上运行我自己定义的猫鼬查询方法在文件中(而不是mongo)。我的代码片段显示了一些方法提供了进一步的说明。谢谢。

module.exports = { 
createRole: function(roleTitle) { 

var roleInfo = { 
    title: roleTitle 
    }, 
    newRole = new models.Role(roleInfo); 

newRole.save(function(err, roles) { 

    if (err) { 
    console.log(err); 
    } 
    return 'role saved'; 

}); 

}, 


getAllUsers: function() { 

return models.User.find({}).sort({ 
    firstname: 'ascending' 
    }) 
    .populate('role'); 

}, 

getAllDocuments: function(limit) { 

return models.Document 
    .find({}) 
    .limit(limit) 
    .sort({ 
    date: 'descending' 
    }) 
    .select('dateCreated permission contents') 
    .populate('permission'); 
    } 
} 

回答

0

As suming我正确地得到了你的问题,你想启动一个控制台,并使用它在你的模块中定义的方法?如果是这种情况,那很简单。启动时没有文件的节点是交互式shell。因此,启动它,导入您的模块,然后将为您提供以下方法:

在命令行类型node(+ enter)上。

然后键入

var MyModule = require('MyModule'); 

接下来,您可以键入MyModule.createRole(....)

+0

非常感谢,这正是我想要的,完美的作品! – realbisoye

0

短的答案:process.argv

#! /usr/bin/env node 

function hiya(name) { 
    console.log('Hello, ' + name) 
} 


console.log('node: ' + process.argv[0]) 
console.log('script path: ' + process.argv[1]) 

if (process.argv.length > 2) 
    hiya(process.argv[2]) 
else hiya('world') 

( “节点示例” 或” ./example “的)输出:

node: node 
script path: /home/julian/wave/example 
Hello, world 

输出(的 ”节点示例性测试“ 或” ./example test“):

node: node 
script path: /home/julian/wave/example 
Hello, test 
+0

非常感谢,这个作品非常好,但我更喜欢下面,因为它不需要编写解决方案任何额外的代码行,我感谢您的回复 – realbisoye

相关问题