首页 > 开发 > NodeJS > 正文

数据总是保存不进去

2017-09-08 17:22:03  来源:网友分享
var mongoose = require("mongoose");// 连接字符串格式为mongodb://主机/数据库名mongoose.connect('mongodb://localhost/test');var Schema = mongoose.Schema;//骨架模版var movieSchema = new Schema({    doctor   : String,    title    : String,    language : String,    country  : String,    year     : Number,    summary  : String,    poster   : String,    flash    : String})//模型var Movie = mongoose.model('Movie', movieSchema);//存储数据var movie = new Movie({    title: '黑衣人三',    doctor: '史密斯',    year: 2018,    flash: 'http://player.youku.com/player.php/sid/XNjA1Njc0NTUy/v.swf',    country: '美国',    language: '英语',    summary: '好片'})//保存数据库movie.save(function(err) {    if (err) {        console.log('保存失败')        return;    }    console.log('meow');});

控制台出现下面的提示:
Mongoose: mpromise (mongoose's default promise library) is deprecated, plug in your own promise library instead: http://mongoosejs.com/docs/pr...

也没报错,但是数据就是插不进去

解决方案

1) 增加默认端口27017到主机地址。即 mongodb://localhost/test
改成 mongodb://localhost:27017/test

2) 用代码测试连接情况,确保连通。比如在mongoose.connect() 之后加这几句:

mongoose.connection.on('connected', function(){    console.log('Connection success!');});mongoose.connection.on('error', function(err){    console.log('Connection error: ' + err);});mongoose.connection.on('disconnected', function(){    console.log('Connection disconnected');});

3) 检查数据究竟存到了哪个collection里。我以前遇到的坑是,如果用你这句

var Movie = mongoose.model('Movie', movieSchema);

的写法,虽然你指定存入名叫 'Movie' 的collection,但可能实际存入的却是名为 'Movies' 的collection(Mongoose自动在后面加了个s)。很坑,但确实会发生。

在 Mongodb SHELL 里用 show collections 等命令,或者借助 RoboMongo, MongoBooster 这些可视化工具就能很容易检查出来。