我正在尝试运行我在 stackoverflow 上找到的一个简单的 Mongoose /Node 示例:
var mongoose = require('mongoose'),
db = mongoose.connect('mongodb://localhost/db'),
Schema = mongoose.Schema;
var sentinel = setTimeout(function(){
throw "failed to connect to MongoDB after one minute!";
}, 60*1000); // 60 seconds
mongoose.model('User', new Schema({
properties: {
name : { type: String, index: true }
}
}));
var User = db.model('User');
var u = new User();
u.name = 'Foo';
u.save();
User.find().all(function(arr) {
clearTimeout(sentinel); // cancel the timeout sentinel
console.log('Users found');
console.log(arr);
console.log('length='+arr.length);
});
process.stdin.resume();
如果我的代码正确,在脚本末尾的终端中应该有一个输出,其中应该打印消息“找到用户”和集合中的所有用户。但我只是收到超时消息。为什么?
我在 Amazon EC2 微型实例上运行我的服务器。安装了 Node、Mongodb 和 mongoose,Mongodb 服务器正在运行(我可以通过“mongo”从终端与其交互)。我还创建了目录/data/db。
最佳答案
我不知道 Mongoose ,但 u.save()
可能是异步的,因为它会写入数据库。尝试
u.save(function (err){
if(err) console.log(err);
User.find().all(function(arr) {
clearTimeout(sentinel); // cancel the timeout sentinel
console.log('Users found');
console.log(arr);
console.log('length='+arr.length);
});
});
编辑:这很好用
var mongoose = require('mongoose');
var connection = mongoose.connect('mongodb://localhost/my_database');
var Schema = mongoose.Schema
var User = new Schema({
author : String
, type : String
});
var MyUserModel = mongoose.model('User', User); //create and access the model User
var u = new MyUserModel();
u.author = 'authorname';
u.save(function(err){
if (err) console.log(err);
});
MyUserModel.find({}, function (err,docs) {
console.log(docs);
});
关于node.js - 简单的 Mongoose 示例不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11342299/