Khi cố gắng để tạo ra một mô hình trong Mongoose tôi nhận được lỗi saulỗi Mongoose vào việc tạo mẫu (sử dụng Bước)
[Lỗi Loại: Không thể đọc thuộc 'tùy chọn' không xác định]
Tôi không có ý tưởng gì gây ra nó
"use strict";
var Step = require('step');
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
function randomFunction() {
var categorySchema = new Schema({
id: Number,
name: String,
description: String
}, { collection: 'categories' });
var Category;
//...
mongoose.connect('mongodb://localhost/grouping');
new Step(
function() { //Connect to mongodb
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.on('open', this);
},
function() { //Create model
console.log(categorySchema); //Logs the schema object right
Category = mongoose.Model('Category', categorySchema);
},
function(err) {
console.log(err); //Error here
});
//...
}
Tôi rất mới đối với Mongo (và khá mới đối với nút) nhưng tôi hoàn toàn không biết ý nghĩa của thông báo lỗi.
Tôi biết tôi có các tùy chọn được xác định trong lược đồ nhưng tôi không thể thấy nó sẽ không xác định, bất kỳ ai có thể chỉ cho tôi đúng hướng không? Lưu ý - đây là một cắt lớn của mã ban đầu, đây là cấu trúc chung (có thực sự một số mã dưới đây mongoose.Model('Cat...
nhưng nó bị bỏ qua, tôi giả định vì lỗi được ném bởi các cuộc gọi mongoose.Model
không phải là ngay cả một console.log("Hello");
được in ngay sau khi nó.
EDIT tôi đã phát hiện ra rằng bên Mongoose (mongoose/lib/document.js) cố gắng để có được this.schema
nhưng nó không xác định
function Document (obj, fields, skipId) { //Line 37
this.$__ = new InternalCache;
this.isNew = true;
this.errors = undefined;
var schema = this.schema; //-> undefined
// ...
Bạn có chắc chắn, bạn đang kết nối với MongoDB, mã phù hợp với kết nối là 'mongoose.connect ('MongoDB: // host/cơ sở dữ liệu', function (err) {console.log ('error occured', err);}); '? – drinchev
Tôi sẽ thử điều đó, cảm ơn. Tôi thấy rằng mã kết nối khác ở đâu đó hoạt động tốt hơn cho tôi bởi vì nó được tách ra – Sam
Hóa ra tôi đã bỏ lỡ một dòng từ câu hỏi của tôi, tôi sẽ thêm nó vào – Sam