每次new mongoose.Schema都会使用相同的默认值。

时间:2019-04-13 10:12:05

标签: javascript node.js mongodb

我在将uuidnew mongoose.Schema一起使用时遇到问题。我使用它来生成设备的唯一密钥,并使用Node.js将其保存到MongoDb。问题在于它每次都使用相同的UUID。

这是模型:

const mongoose = require('mongoose');
const uuid = require('uuid/v4');

const DeviceSchema = new mongoose.Schema({
    deviceNumberHash: {
        type: String,
        required: true
    },
    receivingKey: {
        type: String,
        default: uuid()
    }...
});

这是保存在MongoDb中的内容: enter image description here

你知道怎么了吗?

1 个答案:

答案 0 :(得分:3)

您正在调用 uuid,并将其返回值作为默认值使用。

相反,传入函数(不要在其后加上()

const DeviceSchema = new mongoose.Schema({
    deviceNumberHash: {
        type: String,
        required: true
    },
    receivingKey: {
        type: String,
        default: uuid // <========== No ()
    }...
});

默认值可以是函数per the docs(例如,使用default: Date.now为日期字段提供默认值的示例)。