所以,我正在使用Node.JS和MongoDB编写一个Calendar应用程序。但是我无法将数据库中的信息添加到当前日历中。
以下是我在尝试加载LocalHost:3000/init
TypeError:无法读取未定义的属性“insert” 在/home/patrick/Desktop/Javascript/CalandarApp/server.js:30:13 在Layer.handle [as handle_request](/home/patrick/Desktop/Javascript/CalandarApp/node_modules/express/lib/router/layer.js:95:5) 在下一个(/home/patrick/Desktop/Javascript/CalandarApp/node_modules/express/lib/router/route.js:131:13) 在Route.dispatch(/home/patrick/Desktop/Javascript/CalandarApp/node_modules/express/lib/router/route.js:112:3) 在Layer.handle [as handle_request](/home/patrick/Desktop/Javascript/CalandarApp/node_modules/express/lib/router/layer.js:95:5) at /home/patrick/Desktop/Javascript/CalandarApp/node_modules/express/lib/router/index.js:277:22 在Function.process_params(/home/patrick/Desktop/Javascript/CalandarApp/node_modules/express/lib/router/index.js:330:12) 在下一个(/home/patrick/Desktop/Javascript/CalandarApp/node_modules/express/lib/router/index.js:271:10) 在jsonParser(/home/patrick/Desktop/Javascript/CalandarApp/node_modules/body-parser/lib/types/json.js:100:40) 在Layer.handle [as handle_request](/home/patrick/Desktop/Javascript/CalandarApp/node_modules/express/lib/router/layer.js:95:5)
这是Javascript:
var express = require('express');
var bodyParser = require('body-parser');
var path = require('path');
//Connect to MongoDB
var mongoskin = require('mongoskin');
var db = require('mongodb');
mongoskin.db("mongodb://localhost:3000/testDB", {w: 0});
//Creates Express Application
var app = express();
app.use(express.static('public'));
//is necessary for parsing POST request
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(bodyParser.json());
console.log('Express server started on port 3000');
app.get('/init', function(req, res){
db.event.insert({
text:"Test Event A",
start_date: new Date(2016,5,1),
end_date: new Date(2016,5,5)
});
db.event.insert({
text:"Test Event B",
start_date: new Date(2016,5,3),
end_date: new Date(2016,5,8),
color: "#DD8616"
});
res.send("Test Events were added to the Database")
});
app.get('/data', function(req, res){
db.event.find().toArray(function(err, data){
//set id property for all records
for (var i = 0; i < data.length; i++)
data[i].id = data[i]._id;
//output response
res.send(data);
});
});
app.listen(3000);
答案 0 :(得分:0)
您收到Cannot read property 'insert' of undefined
因为db.event
未定义。您需要使用db.bind('COLLECTION_NAME')
将mongoskin事件绑定到集合名称。
此外,db
应使用mongoskin创建,您不需要require('mongodb')
。
您的代码可以从这开始:
// load mongoskin module
var mongo = require('mongoskin');
// connect to local mongo database
var db = mongo.db('127.0.0.1:27017/test');
// bind db.event to db.collection('event') so you can use db.event.insert
db.bind('event');
// rest of tour code here
答案 1 :(得分:0)
这是插入代码:
var Db = require('mongodb').Db;
var Connection = require('mongodb').Connection;
var Server = require('mongodb').Server;
var db = new Db(dbName, new Server(host, port), {safe: true});
db.open(function (err, db) {
if (err) {
return callback(err);
}
db.collection('collectionName', function (err, collection) {
if (err) {
mongodb.close();
return callback(err);
}
collection.insert(post, {
safe: true
}, function (err) {
mongodb.close();
if (err) {
return callback(err);
}
callback(null);
});
});
});
以下是访问代码:
db.open(function(err, db) {
if(err) {
return callback(err);
}
db.collection('collectionName', function(err, collection) {
if(err) {
mongodb.close();
return callback(err);
}
collection.findOne({
query Condition
}, function(err, result) {
db.close();
if(err) {
return callback(err);
}
callback(null, result);
})
});
});