2016-10-01 40 views
0

我一直在努力和阅读安静一段时间,似乎无法找到我的问题的逻辑解释。嵌入式阵列架构类型在Mongoose上不受尊重

这是我的模式声明代码:

var mongoose = require('mongoose'); 
var Schema = mongoose; 
var exports = module.exports = {}; 

var userSchema = new mongoose.Schema({ 
    username: String, 
    email: String, 
    password: String 
}); 

var messageSchema = new mongoose.Schema({ 
    text: String, 
    user: userSchema, 
    created_at: {type: Date, default: Date.now} 
}); 

var roomSchema = new mongoose.Schema({ 
    name: String, 
    topic: String, 
    users: [userSchema], 
    messages: [messageSchema], 
    created_at: {type: Date, default: Date.now} 
}); 


var User = mongoose.model("user", userSchema); 
var Message = mongoose.model("message", messageSchema); 
var Room = mongoose.model("room", roomSchema); 
exports.Users = User; 
exports.Messages = Message; 
exports.Rooms = Room; 

然后,我只是创造一些假数据:

var usersArr = []; 
var userTemp = new User({ 
    username: "Spiderman", 
    email: "[email protected]", 
    password: "password" 
}); 
userTemp.save(function (err, user) { 
    if (err)return console.log(err) 
    //console.log(user); 
}); 
usersArr.push(userTemp); 

//some more users.... 

//messagesArr 
var messagesArr = []; 
var msgTemp = new Message({ 
    text: "I think Magneto is getting too old", 
    user: usersArr[19] 
}); 
msgTemp.save(function (err, msg) { 
    if (err)return console.log(err) 
    //console.log(msg); 
}); 
messagesArr.push(msgTemp); 

//some more msgs...... 

var roomsArr = []; 
var roomTemp = new Room({ 
    name: "Villains", 
    topic: "Discussing newly spotted villains on our streets", 
    users: usersArr, 
    messages: messagesArr 
}); 
roomTemp.save(function (err, room) { 
    if (err)return console.log(err) 
    // console.log(room); 
}); 
roomsArr.push(roomTemp); 

//some more rooms........ 

惟独当我尝试正在漂亮传中messagesArr

var roomTemp = new Room({ 
     name: "Villains", 
     topic: "Discussing newly spotted villains on pur streets", 
     users: usersArr, 
     messages: messagesArr 
    }); 

然后一切都崩溃

value.validate(fn, {__noPromise: true}); ^

TypeError: value.validate is not a function

对我来说,它看起来非常类似于我正在做的其他模式,我无法弄清楚这是什么问题。任何帮助都感激不尽!好像,我真的失去了一些东西:/

回答

0
var roomsArr = []; var roomTemp = new Room(); 
    roomTemp.name = "Villains"; 
    roomTemp.topic = "Discussing newly spotted villains on our streets"; 
    roomTemp.users = usersArr; 
    roomTemp.messages.push({msg:messagesArr}); // I did chenages here 

roomTemp.save(function (err, room) { 
    if (err)return console.log(err) // console.log(room); }); roomsArr.push(roomTemp); 

I have done changes in your roomTemp object and saving it, now its 
should work 
+0

请重新格式化你的答案,这是非常难以阅读。 –

0

这里让有最终工作代码...

var mongoose = require('mongoose'); var Schema = mongoose.Schema; 
var exports = module.exports = {}; 

var userSchema = new Schema({ 
    username: String, 
    email: String, 
    password: String }); 

var messageSchema = new Schema({ 
    text: String, 
    //user: userSchema, 
    user:Object, 
    created_at: {type: Date, default: Date.now} }); 

var roomSchema = new Schema({ 
    name: String, 
    topic: String, 
    users:[userSchema], 
    messages:[messageSchema], 
    created_at: {type: Date, default: Date.now} }); 

var User = mongoose.model("user", userSchema); 
var Message = mongoose.model("message", messageSchema); 
var Room = mongoose.model("room", roomSchema); 
exports.Users = User; 
exports.Messages = Message; 
exports.Rooms = Room; 




require("./config/monDB"); 
require('./SOFmodel'); 
var mongoose = require("mongoose"); 
var User = mongoose.model("user"); 
var Message = mongoose.model("message"); 
var Room = mongoose.model("room"); 

var usersArr = []; 
var userTemp = new User({ 
    username: "Spiderman", 
    email: "[email protected]", 
    password: "password" }); 
    userTemp.save(function (err, user) { 
    if (err)return console.log(err) 
    //console.log(user); }); 
    usersArr.push(userTemp); 

console.log(usersArr[0]); //some more users.... 

//messagesArr 
var messagesArr = []; 
var msgTemp = new Message({ 
    text: "I think Magneto is getting too old", 
    user: usersArr[0] }); 

msgTemp.save(function (err, msg) { 
    if (err)return console.log(err) 
    //console.log(msg); }); 
messagesArr.push(msgTemp); 

//some more msgs...... 

console.log(messagesArr); 
var roomsArr = []; 
var roomTemp = new Room(); 

    roomTemp.name = "Villains"; 
    roomTemp.topic = "Discussing newly spotted villains on our streets"; 
    roomTemp.users = usersArr; 
    roomTemp.messages.push({msg:messagesArr}); 

roomTemp.save(function (err, room) { 
    if (err)return console.log(err) // console.log(room); }); roomsArr.push(roomTemp); 
+0

当user:userSchema被注释时,它确实在工作,但是它不是在消息模式中声明用户的要点吗?我所做的是不是将其声明为模式,而是声明一个用户对象。我仍然不明白究竟是什么问题。宣布模式不是更方便吗? –