我有ObjectId的字符串。
var comments = new Schema({ user_id: { type: Schema.Types.ObjectId, ref: 'users',required: [true,'No user id found']}, post: { type: Schema.Types.ObjectId, ref: 'posts',required: [true,'No post id found']}.... export let commentsModel: mongoose.Model<any> = mongoose.model("comments", comments);
我如何使用它:
let comment = new commentsModel; str = 'Here my ObjectId code' // comment.user_id = str; comment.post = str; comment.save();
创建“评论”模型并分配字符串user_id值或发布时,保存时出现错误。我将console.log(comment)所有数据分配给vars。
console.log(comment)
我尝试:
var str = '578df3efb618f5141202a196'; mongoose.mongo.BSONPure.ObjectID.fromHexString(str);//1 mongoose.mongo.Schema.ObjectId(str);//2 mongoose.Types.ObjectId(str);//3
当然, 在所有通话之前* ,我还包括了猫鼬 *
import * as mongoose from 'mongoose';
什么都行不通。
您要使用默认导出:
import mongoose from 'mongoose';
之后,mongoose.Types.ObjectId将起作用:
mongoose.Types.ObjectId
import mongoose from 'mongoose'; console.log( mongoose.Types.ObjectId('578df3efb618f5141202a196') );
编辑: 完整示例(已通过测试mongoose@4.5.5):
mongoose@4.5.5
import mongoose from 'mongoose'; mongoose.connect('mongodb://localhost/test'); const Schema = mongoose.Schema; var comments = new Schema({ user_id: { type: Schema.Types.ObjectId, ref: 'users',required: [true,'No user id found']}, post: { type: Schema.Types.ObjectId, ref: 'posts',required: [true,'No post id found']} }); const commentsModel = mongoose.model("comments", comments); let comment = new commentsModel; let str = '578df3efb618f5141202a196'; comment.user_id = str; comment.post = str; comment.save().then(() => console.log('saved')) .catch(e => console.log('Error', e));
数据库显示如下:
mb:test$ db.comments.find().pretty() { "_id" : ObjectId("578e5cbd5b080fbfb7bed3d0"), "post" : ObjectId("578df3efb618f5141202a196"), "user_id" : ObjectId("578df3efb618f5141202a196"), "__v" : 0 }