关于mongoose的问题
发布于 10 年前 作者 hc2014 3903 次浏览 最后一次编辑是 8 年前 来自 问答

定义了一个model层访问的入口,代码如下:

var mongoose = require('mongoose');
mongoose.connect('mongodb://127.0.0.1:27017/user');

require('./user');
exports.User = mongoose.model('user');

定义了一个user 的model

var mongoose = require('mongoose');
 	var Schema = mongoose.Schema;

	var UserSchema = new Schema({
	  username: { type: String},
	  pwd: { type: String},
	  email: { type: String},
	  nickname: { type: String }
	});

mongoose.model('user', UserSchema);

然后我访问的时候代码i这样写的

	var UserModel = mongoose.User;
	UserModel.find({},function(err,user){
		if(err){
			logInfo.info(err.message);
		}else{
			res.render('test_user.html',{user:user}); 
		}
	})

可是最后显示的是插叙的user 数据集合中数据的个数是0,首先,我想问问,我的代码是否有地方写错了,然后如果没有的话,那就是mongoose d model是怎么和mongodb数据库中我的user 库中的user表关联起来的呢?

6 回复

mongoose帮你加个s所以你定义的user,在mongodb中应该是users

@karlsun 真的假的哦?

@karlsun 我这里是先用其他的模块往mongodb数据库中插入的数据.现在想换mongoose试试的.所以之前user 数据库中collecion的名称都是我自定义的(乱写的)

@karlsun 搞定了!还真是你说的那样,我用user Model新建了一条数据,然后查询以后就有了,数据库也多了一个users的数据集合。 不过假如我想关联现有的数据集合 呢?

@hc2014 你可能需要将数据按照你写的schema先导进去才能取出数据来吧。

@pockry 问题就像@karlsun 说的那样,mongoose默认给集合名称加了个s,可是我现在的问题是,假如我想访问现有的数据就应该怎么做?

回到顶部