使用MongoDb和Node.js输入数据
Entering data with MongoDb and Node.js
所以我试图将数据输入到节点的mongodb集合中。据我所知,我可以拿到这些藏品。
var collection = db.collection("whatsGoingOnEvents");
if(collection){
console.log("hitting stream");
var stream = collection.find({time: parsedObject.time, endTime: parsedObject.endTime, lon:parsedObject.lon,lat:parsedObject.lat}).stream();
console.log(stream);
stream.on("data",function(data){
console.log("data");
console.log(data);
if(!data){
collection.insert(parsedObject);
console.log("hitting insert");
}
});
stream.on("end",function(){
//dosomething
});
}
parsedObject可能有也可能没有所有这些字段-这有关系吗?我想如果字段不存在,那么collection.find()只是寻找"未定义"的时间,这在技术上仍然是一个值。
我从不点击console.log("data")
,所以我从不插入文档。我一直在追踪这个链接。
,所以我不确定为什么插入没有发生。我知道没有添加from db.collection.stats();
,这告诉我集合的大小是0。
哦,还有,这是我用来连接Mongo的-
var mongo = require('mongodb').MongoClient;
编辑,
我尝试了下面的答案-导致这个错误-
lib/mongodb/connection/server.js:481
throw err;
^
Error: Cannot use a writeConcern without a provided callback
at insertAll (/Users/psanker/Google Drive/Coding/Javascript/WhatsGoingOn/node_modules/mongodb/lib/mongodb/collection.js:332:11)
at Collection.insert (/Users/psanker/Google Drive/Coding/Javascript/WhatsGoingOn/node_modules/mongodb/lib/mongodb/collection.js:91:3)
如果您的查询不匹配任何记录(这似乎合乎逻辑,因为您写的集合大小为0),data
事件处理程序将永远不会被调用(因为只有在有实际结果时才会调用)。
我认为你最好使用findOne
和常规回调:
collection.findOne({ params }, function(err, result) {
if (err)
throw err;
if (result === null) {
collection.insert(parsedObject, { w: 0 });
}
});
甚至是upsert
相关文章:
- React Native通过Navigator将用户输入数据传递到选项卡栏IOS中的组件
- 如何读取表单中的输入数据
- 从MySQL数据库中获取输入数据需要两次页面刷新
- 从html表中的输入数据创建图表
- 如何使用输入数据加载新的extjs图表
- Node.js输入数据事件停止
- 如何将输入数据(许多数据)添加到同一页面的下表中
- 如何使用asp.net中的Web服务从clintside输入数据
- AngularJS自定义过滤器调用了两次,并在第二次调用时删除输入数据
- Javascript:在表单中输入数据时,提交按钮不处于活动状态
- 在动态输入数据的下拉菜单中设置默认值
- d3.js强制可折叠图-输入数据是对象数组
- 如何使用HTML表显示存储在数组中的用户输入数据
- 如何使用带按钮的表链接到HTML页面,并让它使用AngularJS从Firebase输入数据
- GAS - 等到用户输入数据后,功能才会继续
- 为什么它说输入数据数组的格式不正确 jqchart.
- 将输入数据保存到全局变量
- 当输入ng-model是ngRepeat变量时,如何从输入数据中获取
- 触发 html5 输入数据列表下拉列表显示
- 如何在 AJAX 请求 (Rails) 之间保留表单输入数据