Nodejs mongoose 保存成功,但是用其它工具看 test 数据库中没有 Blog 这个 Collection
Nodejs mongoose 保存成功,但是用其它工具看 test 数据库中没有 Blog 这个 Collection
var mongoose = require(‘mongoose’);
var Schema = mongoose.Schema;
mongoose.connect(‘mongodb://localhost/test’);
var db = mongoose.connection;
db.on(‘error’, console.error.bind(console, ‘connection error:’));
db.once(‘open’, function (callback) {
// yay!
var blogSchema = new Schema({
title: String,
author: String,
body: String,
comments: [{ body: String, date: Date }],
date: { type: Date, default: Date.now },
hidden: Boolean,
meta: {
votes: Number,
favs: Number
}
});
var Blog = mongoose.model(‘Blog’, blogSchema);
var blog = new Blog({
title: ‘this is my blog title’,
author: ‘me’,
body: ‘the body of my blog. can you see that?’
});
blog.save();
});
开发环境: Nodejs + Express + Mac + MongoDB, 都在最新版本
11 回复
用其他工具查的时候试试看 Blogs ?
是 blogs 命名的 collection 吧,如果你要指定自定义的 collection, 需要在 schema 中设置,{collection: ‘Blog’}
其它工具是指 Robomongo 吗,旧版本的连接 mongodb 3.2 会有这个问题
对的,我是用的 Robomongo 0.8.4
我在 save 中加了一个 function(error, model) {} ,error 为空, model 是有值的。
我直接安装好 mongodb, 然后运行的 shell:mongod --dbpath ./data , 运行以上代码后,用 Robomongo 查看数据库 test 创建成功了,就是没有 Collections, test 数据库下面 Collections,Functions,Users 都为 0
我试一试其他工具。
果然是工具 Robomongo 问题。
mongoose 会自动在集合名后加 s ,所以你的集合其实是 blogs ,如果要指定是 blog ,这样写:
var Blog = mongoose.model(‘Blog’, blogSchema,‘Blog’);