0
什麼是當前的行爲?無法讀取屬性'類型'的未定義 - 使用貓鼬Schema.Types.ObjectId
要運行腳本,我使用babel-node
,因爲腳本使用es6。
Cannot read property 'Types' of undefined
authorId: { type: mongoose.Schema.Types.ObjectId, ref: 'User' },
^
如果當前的行爲是一個錯誤,請提供重現步驟。 我已經定義是這樣的模式:
import * as mongoose from 'mongoose';
const Schema = mongoose.Schema;
const RecipeSchema = new Schema ({
authorId: { type: mongoose.Schema.Types.ObjectId, ref: 'User' },
name: String,
description: String,
photos: [
{
name: String,
path: String,
isMain: Boolean,
alt: String
}
],
ingredients: [
{
name: String,
quantity: Number,
metricType: {
type: String,
enum: [ 'kg', 'g', 'mg', 'l', 'ml', 'unit' ],
default: 'unit'
}
}
],
preparement: String,
isForSell: { type: Boolean, required: true, default: false },
price: Number,
url: String,
portionNumber: Number,
time: Number,
grades: [
{
user: { type: mongoose.Schema.Types.ObjectId, ref: 'User' },
grade: Number,
date: Date
}
],
});
export default mongoose.model ('Recipe', RecipeSchema);
並試圖用這樣的功能種子數據庫:
async function insert_recipe() {
const user = await User.findOne ({});
await Recipe.create ({
authorId: user.id,
name: 'some name',
description: 'some description',
ingredients: [
{
name: 'foo',
quantity: 12,
metricType: 'g'
},
{
name: 'bar',
quantity: 50,
metricType: 'g'
}
],
preparement: 'how to do something like this',
isForSell: false,
portionNumber: '5',
time: 20
什麼是預期的行爲? 它應該使用擁有配方的第一個用戶ID並在數據庫上創建配方本身。
請提及你的node.js,mongoose和MongoDB版本。 我在當前時刻爲所有人使用最新版本。 (2017-09-15)
你實際上是用'babel'還是'typecript'運行?哪一個? 'import'沒有爲nodejs啓用,所以你需要澄清你實際使用它的方式。 –
您對「用戶」引用中的「成績」也有錯誤。您將該屬性標記爲「type:String」,但之前使用ObjectId引用了相同的模型。由於這意味着''用戶'模型中的_id'字段,因此它也應該是'ObjectId'。不是現在的問題,而是下一個你會遇到的問題。 –
我使用'babel-node'來運行腳本。我試圖把'type:String',因爲我看到它在另一個帖子在stackoverflow。但它沒有奏效。 –