0

here is my code for models.js where I keep models

var mongoose = require('mongoose')
, Schema = mongoose.Schema;
var GroupSchema = new Schema({
    title      : String
    , elements   : [ElementSchema]
    , author     : String 
});
var ElementSchema = new Schema({
    date_added : Date
    , text       : String
    , author     : String 
});
mongoose.model('Group', GroupSchema);
exports.Group = function(db) {return db.model('Group');};

mongoose.model('Element', ElementSchema);
exports.Element = function(db) { return db.model('Element');
};

To me it looks pretty clear, but when I do

function post_element(req, res, next) {
Group.findOne({_id: req.body.group}, function(err, group) {
    new_element = new Element({author: req.body.author,
        date_added: new Date()});
        new_element.save();
        group.elements.push(new_element);
        group.save();
    res.send(new_element);
    return next();
})
}

I don't understand why when I go in Mongo I have two collections one called Groups with nested groups (so it looks fine) and the other collection is called Elements.

なんで?単に Group と呼ぶべきではありませんか? わかりません、説明してくれませんか?

ありがとう、g

4

2 に答える 2

1

この行を実行すると:

new_element.save();

新しく作成した要素を Elements コレクションに保存しています。要素に対して save を呼び出さないでください。探している動作が得られると思います。

于 2012-05-29T23:18:26.990 に答える
0

次の行が原因です。

mongoose.model('Element', ElementSchema);

これにより、モデルが mongoose に登録されます。モデルを登録すると、mongo 内に独自のコレクションが作成されます。あなたがしなければならないのは、この行を取り除くことだけで、それが消えるのを見るでしょう.

別の注意点として、モデルをエクスポートするには、以下を使用して、ファイルごとに 1 つのモデルのみをエクスポートするようにファイルをセットアップする方が、はるかにクリーンで簡単です。

module.exports = mongoose.model('Group', GroupSchema);

お役に立てれば!

于 2012-05-30T13:58:17.713 に答える