我试图使用节点,当我通过'npm install package.json'安装npm软件包时,
我目前正在使用Windows 8.1作为我的操作系统.它开始于我开始使用redis但我不确定是否是因为redis.我得到的错误是
MSBUILD:错误MSB4132:工具版本"2.0"无法识别.可用的工具版本是"4.0".
完整的控制台打印出来了
如果有人遇到这个错误,如何修复它将不胜感激
我正在尝试从expressjs插入一个日期值到mongodb.我正在使用mongodb本机驱动程序.
问题是当我使用创建对象并使用该变量插入它时,日期将作为字符串插入.这是样本 -
var expenseTest = {date: new Date()};
database.collection('expensemaster').insert(expenseTest, function(err, r){
console.log("query executed");
});
Run Code Online (Sandbox Code Playgroud)
这里DB-中的值
{
"_id" : ObjectId("584f9b6e8c06a5717d10ee59"),
"date" : "2016-12-13T06:55:24.698Z",
}
Run Code Online (Sandbox Code Playgroud)
但是当我直接在插入查询中插入对象时,它的日期将返回为ISODate(日期).
这是样本 -
database.collection('expensemaster').insert({date: new Date()}, function(err, r) {
console.log("query executed");
});
Run Code Online (Sandbox Code Playgroud)
db-中的值
{
"_id" : ObjectId("584fba82566fc8787e75a7ed"),
"date" : ISODate("2016-12-13T09:08:18.441Z")
}
Run Code Online (Sandbox Code Playgroud)
我的问题是 - 如果我必须使用insertMany插入具有日期作为字段之一的对象数组.
如何在数据库中获取ISODate(日期)的日期.
使用Ajax,我只是尝试将Json数据发送到节点服务器,没有处理只涉及发送时的警报,并在收到时发出警报:
这是我的html5:带有onclick函数的简单按钮,用于触发使用ajax调用的函数
<!DOCTYPE HTML>
<html>
<head>
<script>
function send()
{
//alert("Hello World");
$.ajax
({
type: "post",
url: "http://localhost:8000",
dataType: "json",
contentType: "application/json; charset=UTF-8",
data: JSON.stringify({name: "Dennis", address: {city: "Dub", country: "IE"}})
}).done(function ( data ) {alert("ajax callback response:" + data);
});
</script>
</head>
<body>
<button onclick="send()">Click Me!</button>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这是我的节点服务器的一部分:用于创建服务器并侦听某些操作
var port = 8000;
var server = http.createServer();
server.on('request', request);
server.listen(port);
function request(request, response)
{
var store = '';
response.writeHead(200, {"Content-Type": "text/json"});
request.on('data', function(data)
{
store += data;
});
request.on('end', …Run Code Online (Sandbox Code Playgroud) 我尝试使用 gitlab runner 来测试和构建我的节点服务器,但在尝试自动化测试时遇到了一个小问题。在我的 package.json 中我有脚本
"scripts": {
"start": "node app.js",
"test-init": "node ./node_modules/jasmine/bin/jasmine.js init",
"test": "set NODE_ENV=Dev&& node ./node_modules/jasmine/bin/jasmine.js"
},
Run Code Online (Sandbox Code Playgroud)
所以NODE_ENV=Dev会加载不同的设置文件。一个使用 mongodb url 的服务器"mongodb://mongo/DBName",当我在本地主机上运行时,npm test服务器崩溃(正如它应该的那样),因为它无法使用开发设置文件连接到 mongo。但是,当我在运行器上运行 GitLab 中的项目时,它不会连接到数据库,因为它使用具有 url 的非开发设置文件。GitLab-ci 中是否有任何原因导致未设置 NODE_ENV?下面是我的 GitLab-ci.yml
image: node:latest
stages:
- build
- test
cache:
paths:
- node_modules/
services:
- mongo
install_dependencies:
stage: build
script:
- npm install
artifacts:
paths:
- node_modules/
test_with_lab:
stage: test
script:
- npm run test-init
- npm test
Run Code Online (Sandbox Code Playgroud) 我使用Node.js和Mongo(mongodb驱动程序)将项目添加到集合中.我有一个html站点,使用socket.io将信息传递给页面.我可以插入数据库但是当我试图查看是否存在值时,我从Mongo得到一个奇怪的回报.我发送一个名字,并尝试将其放入客户端集合中.到目前为止我所拥有的是:
socket.on('DB', function(msg)
{
if(msg.Status == "Read")
{
MongoClient.connect(url, function(err, db) //connect to mongo
{
var collection = db.collection('Clients'); // get reference to the collection
collection.find(({Name: msg.Name},{$exists: true}), function(err, doc) //find if a value exists
{
if(doc) //if it does
{
console.log(doc); // print out what it sends back
}
else if(!doc) // if it does not
{
console.log("Not in docs");
}
});
db.close();
});
}
}
Run Code Online (Sandbox Code Playgroud)
这让我回报:
{ connection: null,
server: null,
disconnectHandler:
{ s: { storedOps: [], storeOptions: …Run Code Online (Sandbox Code Playgroud) 我知道该节点是一个单线程系统,我想知道一个子进程是使用它自己的线程还是它的父进程。比如说我有一个带有两个线程的 amd E-350 cpu。如果我运行一个节点服务器,它产生了十个连续工作的子实例。它会允许它还是会因为硬件本身不够而失败?
node.js ×6
javascript ×3
mongodb ×3
ajax ×1
gitlab-ci ×1
html5 ×1
json ×1
msbuild ×1
npm ×1
windows-8.1 ×1