2018年11月6日火曜日

module.exports と exports.something のメモ

同じファイルの中に二つのSchemaを定義していて、 module.exports が上手くいかなくて悩んだのですが。

参考: Node.js – exportsとmodule.exportsで関数を公開する – KeruuWeb

module.exportsは単一のモジュールを公開するときに使います。

OK

'use strict';

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

// userId(_id), description, duration, and optionally date
var logSchema = new Schema({
  description: {type: String, required: true},
  duration: {type: Number, required: true},
  date: {type: Date}
});

var userSchema = new Schema ({
  username: {type: String, required: true},
  _id: {type: Number, required: true, unique: true},
  logs: [logSchema]
});

// これだとうまくいく
exports.log = mongoose.model('log', logSchema);
exports.user = mongoose.model('user', userSchema);

NG

'use strict';

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

// userId(_id), description, duration, and optionally date
var logSchema = new Schema({
  description: {type: String, required: true},
  duration: {type: Number, required: true},
  date: {type: Date}
});

var userSchema = new Schema ({
  username: {type: String, required: true},
  _id: {type: Number, required: true, unique: true},
  logs: [logSchema]
});

// 上手くいかない
module.exports = mongoose.model('log', logSchema);
module.exports = mongoose.model('user', userSchema);

よく考えたらそうよねと…同じmodule.exportsに2回代入してるものね。

0 件のコメント:

コメントを投稿