node.js - 数据总是保存不进去
高洛峰
高洛峰 2017-04-17 15:16:40
0
5
720
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...

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

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全員に返信(5)
Peter_Zhu

1) デフォルトのポート 27017 をホスト アドレスに追加します。つまり、mongodb://localhost/test
mongodb://localhost:27017/test

に変更されます。

2) コードを使用して接続をテストし、接続を確認します。たとえば、mongoose.connect() の後に次の文を追加します:

リーリー

3) データがどのコレクションに保存されているかを確認します。以前私が遭遇した落とし穴は、あなたのフレーズ

を使用すると、 リーリー

は、'Movie' という名前のコレクションを保存するように指定しても、実際に保存されるコレクションは 'Movies' という名前のコレクションになるように記述されています (Mongoose は最後に s を自動的に追加します)。 )。ひどいことですが、それは起こります。

Mongodb SHELL の show collections などのコマンドを使用するか、RoboMongo や MongoBooster などの視覚化ツールを使用することで、簡単に確認できます。

いいねを押す +0
巴扎黑


mongoose.Promise = global.Promise;

の前に mongoose.connect('mongodb://localhost/test');

を追加します
いいねを押す +0
Ty80

データを取得または保存できません

いいねを押す +0
小葫芦

ポスターアイテムの節約は少なくするべきです

いいねを押す +0
PHPzhong

プロンプトは、mongoose は組み込みの Promise を実装しなくなったため、サードパーティの Promise プラグインを自分で追加する必要があることを示しています
使用している document.save は Promise を返すメソッドである可能性があります
これを Module.create に変更してみてください

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート